通过Android尝试HTTP POST时,基本HTTP身份验证是否起作用?
我一直在使用一些在完成HTTP GET请求时使用基本身份验证的代码,它可以完美地工作。完成HTTP POST时,我需要使用相同的身份验证。
HttpPost request = new HttpPost(baseUrl+"events.json");
String credentials = email + ":" + password;
String base64EncodedCredentials = Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
request.setHeader("Authorization", "Basic " + base64EncodedCredentials);
request.setHeader(HTTP.CONTENT_TYPE,"application/json");
try
{
ArrayList<NameValuePair> vars = new ArrayList<NameValuePair>(2);
vars.add(new BasicNameValuePair("event[name]",currentEvent.name));
vars.add(new BasicNameValuePair("event[location]",currentEvent.location));
vars.add(new BasicNameValuePair("event[num_expected]",new Integer(currentEvent.num_expected).toString()));
request.setEntity(new UrlEncodedFormEntity(vars));
} catch (Exception e) {
// Log exception
Log.e("CreateEvent", "doInBackground — " + Errors.getStackTrace(e));
}
HttpClient httpclient = new DefaultHttpClient();
try {
HttpResponse response = httpclient.execute(request);
if (response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
String responseString = EntityUtils.toString(entity, "UTF-8");
return 1;
}
}
catch (Exception e) {
// Log exception
Log.e("CreateEvent", "doInBackground — " + Errors.getStackTrace(e));
}
响应是HTTP 500错误。它没有返回任何详细信息,所以我无法确切地说出问题所在,但是唯一的区别是POST和传递表单数据。
更详细地查看您的代码,好像您将其设置为Content-Type
,application/json
然后发送application/x-www-form-urlencoded
数据(我想是UrlEncodedFormEntity
这样),因此Web服务无法将数据解析为JSON。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句