【发布时间】:2015-01-17 10:50:52
【问题描述】:
有人对从 Android 向 Django REST Framework 发出 PUT 请求有什么建议吗?当我将下面的代码发布到我的 API 端点,指定要更新的记录(例如http://mydomain/api/26)时,我收到状态代码 200 和目标记录的 json 内容的响应,但没有任何内容被更新请求。相比之下,当我通过 Postman 或通过可浏览的 API 发出看似相同的请求时,它工作正常,给了我 200 响应和更新的 json 内容。同样,我可以毫无问题地使用几乎相同的 Android 代码向 API 发出 POST 请求。任何想法都会很棒。谢谢。
public static HttpResponse putJsonString(String jsonString, String targetUrl, Context context){
HttpResponse result = null;
try {
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 3000;
HttpConnectionParams.setConnectionTimeout(httpParameters,
timeoutConnection);
int timeoutSocket = 3000;
HttpConnectionParams
.setSoTimeout(httpParameters, timeoutSocket);
DefaultHttpClient httpclient = new DefaultHttpClient(
httpParameters);
HttpPut httpPut = new HttpPut(targetUrl);
StringEntity se = new StringEntity(jsonString, "UTF-8");
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE,
"application/json"));
httpPut.setEntity(se);
httpPut.setHeader("Accept", "application/json");
httpPut.setHeader("Content-type", "application/json");
httpPut.setHeader("Authorization", "Token " + PropertyHolder.getUserKey());
Log.d("put", "put content: " + parseInputStream(context, httpPut.getEntity().getContent()));
result = httpclient.execute(httpPut);
} catch (UnsupportedEncodingException e) {
Util.logError(context, TAG, "error: " + e);
} catch (ClientProtocolException e) {
Util.logError(context, TAG, "error: " + e);
} catch (IOException e) {
Util.logError(context, TAG, "error: " + e);
}
return result;
}
【问题讨论】:
标签: android django django-rest-framework