0

我正在开发一个 Android 应用程序,它使用 REST Web 服务将内容发送到服务器。

使用简单的参数(字符串,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?请记住:使用简单的数据可以正常工作。

4

2 回答 2

0

您需要将内容类型设置为

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

有关更多详细信息,请参阅此示例

于 2012-06-23T17:17:34.693 回答
0

尝试使用这种方式将 xml 发布到服务器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"));
}
于 2012-06-23T17:24:39.960 回答