我尝试从我的Android设备连接到REST网络服务并在那里输入一些数据,但我得到的只是一个GET结果。甚至我的网络服务器都坚持认为这是一个GET请求。我的代码出了什么问题?
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPut httpPut = new HttpPut(url);
httpPut.addHeader("Content-Type", "application/xml; charset=utf-8");
httpPut.addHeader("User-Agent", "Android");
HttpEntity entity = new StringEntity(data);
httpPut.setEntity(entity);
HttpResponse response = httpclient.execute(httpPut);
HttpEntity input = response.getEntity();
StringBuilder result = new StringBuilder();
if (input != null) {
InputStream instream = input.getContent();
result = convertStreamToString(instream);
instream.close();
}
httpclient.getConnectionManager().shutdown();
return result.toString();
答案 0 :(得分:0)
使用JSONStringer这个mmight解决你的问题...
我为此苦苦挣扎........
你的代码应该看起来像这样......
HttpPut request = new HttpPut("your URL");
JSONStringer json = new JSONStringer()
.object()
.key("cname").value(name)
.key("cmail").value(email)
.endObject();
StringEntity entity = new StringEntity(json.toString());
entity.setContentType("application/json;charset=UTF-8");//text/plain;charset=UTF-8
entity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8"));
request.setEntity(entity);
// Send request to WCF service
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(request);
...谢谢
答案 1 :(得分:0)
试着听一听
Android HttpPut example code
为什么你使用put方法而不是发帖?
答案 2 :(得分:0)
我通过POST请求发生了这件事。我的问题与服务器端问题有关,涉及我们的主机使用代理和mod_rewrite的组合。我们的重写是将所有非www流量引导到www域,并且我们主机的代理服务器将请求转换为GET并删除了帖子数据。我们的简单解决方案是在初始请求中使用www版本,以避免重写。不需要对服务器端进行任何更改(这本来很棘手)。