小妹刚刚接触andriod开发,最近做andriod使用post请求rest登录接口,遇到问题,描述如下:
那个rest登录接口地址是:POST http://host:port/rest/dojo/liveevent/user/user/login
要求传递json格式:{"@type":"lesUserModel","@userID":"10119","@password":"123"}.
我的做法是:
private JSONObject query(String username, String password) throws Exception {
//使用JSONObject封装请求参数
JSONObject jsonObject = new JSONObject();
jsonObject.put("@userID", username);
jsonObject.put("@password", password);
jsonObject.put("@type", "lesUserModel");
// 定义发送请求的URL
String url = HttpUtil.BASE_URL + "user/user/login";
// 发送请求
return new JSONObject(HttpUtil.postRequest(url, jsonObject));
}
HttpUtil.postRequest方法如下:
public static String postRequest(String url, JSONObject jsonObject)
throws Exception {
// 创建HttpPost对象。
HttpPost post = new HttpPost(url);
// 如果传递参数个数比较多的话可以对传递的参数进行封装
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("application/cdmi-object", jsonObject.toString()));
// 设置请求参数
post.setEntity(new UrlEncodedFormEntity(params, "gbk"));
post.setHeader("Accept", "application/cdmi-object");
// 发送POST请求
HttpResponse httpResponse = httpClient.execute(post);
// 如果服务器成功地返回响应
if (httpResponse.getStatusLine().getStatusCode() == 200) {
// 获取服务器响应字符串
String result = EntityUtils.toString(httpResponse.getEntity());
return result;
}
return null;
}
现在的问题是:httpResponse.getStatusLine().getStatusCode() 的返回值是“415”,上网查了一下“415:不支持的媒体类型(Unsupported media type)”。
真是头晕,不知道是什么原因造成的,由于我是刚刚学习andriod开发,上面postRequest方法中有些值的设置都不知道是什么意思。那位有经验的大哥能出手帮帮小妹吗,小妹万分感激!
REST URL post,415
------解决方案--------------------
看看这个:
// JSONObject data, String url
HttpPost request = new HttpPost(url);