2012-06-23 106 views
0

我正在開發一個Android應用程序,該應用程序使用其他Web服務將內容發送到服務器。發送郵件xml到REST

使用簡單參數(字符串,int,...)它很好,但知道我想發送一些對象,我試圖通過POST將對象的XML形式發送到服務器請願。但是我收到一個415代碼(「不支持的媒體類型」),我不知道可能是什麼。我知道xml是可以的,因爲使用Firefox的POSTER插件,您可以將發佈數據發送到Web服務,並且響應正常,但通過Android我無法做到。

這裏是代碼我使用:

ArrayList<NameValuePair>() params = new ArrayList<NameValuePair>(); 
params.add(new BasicNameValuePair("customer", "<customer> <name>Bill Adama</name>  <address>lasdfasfasf</address></customer>"); 

HttpPost request = new HttpPost(url); 
request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); 

HttpClient client = new DefaultHttpClient(); 
HttpResponse httpResponse = client.execute(request); 

任何提示?我真的不知道發生了什麼事。也許我需要在標頭http中指定任何內容,因爲我發送了一個xml文件?記住:使用簡單的數據,它工作正常。

回答

0

您需要的內容類型設置爲

conn.setRequestProperty("content-type", "application/x-www-form-urlencoded"); 

請參閱本example瞭解更多詳情。

+0

這是行不通的 – Frion3L

+1

我已經固定發佈的XML服務器。這是內容類型 - > application/xml – Frion3L

0

嘗試這種方式使用DefaultHttpClient()

String strxml= "<customer><name>Bill Adama</name><address>lasdfasfasf</address></customer>"; 
InputStream is = stringToInputStream(strxml); 
HttpClient client = new DefaultHttpClient(); 
HttpPost post = new HttpPost(PATH); 
InputStreamBody isb = new InputStreamBody(is, "customer.xml"); 
MultipartEntity multipartEntity = new MultipartEntity(); 
multipartEntity.addPart("file", isb); 
multipartEntity.addPart("desc", new StringBody("this is description.")); 
post.setEntity(multipartEntity); 
HttpResponse response = client.execute(post); 
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { 
    is = response.getEntity().getContent(); 
    String result = inStream2String(is); 
    } 

public InputStream stringToInputStream(String text) throws UnsupportedEncodingException { 
    return new ByteArrayInputStream(text.getBytes("UTF-8")); 
} 
+0

這完全改變了我的web服務客戶端... – Frion3L