我嘗試收到如下因素代碼HTTP響應:無法獲取的POST HTTP請求的HTTP JSON響應
public void httpRes(){
try {
HttpClient client = new DefaultHttpClient();
String postURL = "http://validate.jsontest.com/";
HttpPost post = new HttpPost(postURL);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("user", "kris"));
params.add(new BasicNameValuePair("pass", "xyz"));
UrlEncodedFormEntity ent = new UrlEncodedFormEntity(params, HTTP.UTF_8);
post.setEntity(ent);
HttpResponse responsePOST = client.execute(post);
HttpEntity resEntity = responsePOST.getEntity();
if (resEntity != null) {
Log.i("RESPONSE",EntityUtils.toString(resEntity));
}
} catch (Exception e) {
e.printStackTrace();
}}
得到了一個錯誤 -
logcat的日誌:
09-12 21:48:58.099: INFO/RESPONSE(28485): {
"error": "No JSON to validate. Please post JSON to validate via the json parameter.",
"validate": false
}
我試圖從GET請求接收響應 - 一切正常,但是當我嘗試POST請求所有各種POST代碼 - 我無法得到答案!問題是什麼?需要幫忙。
我也試過:
Map<String, String> comment = new HashMap<String, String>();
comment.put("password", "password");
comment.put("avatar", "httpssssssss");
String json = new GsonBuilder().create().toJson(comment, Map.class);
HttpResponse response = makeRequest("http://validate.jsontest.com/", json);
//Log.w(TAG, EntityUtils.toString(response));
try {
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
String sss= convertStreamToString(is);
Log.w("SSSSSSSSSSSSSSSSSS", sss);
} catch (Exception ex) {
Log.w("Exception exxx", ex);
}
public static HttpResponse makeRequest(String uri, String json) {
try {
HttpPost httpPost = new HttpPost(uri);
httpPost.setEntity(new StringEntity(json));
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
return new DefaultHttpClient().execute(httpPost);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append((line + "\n"));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
那麼,是什麼問題?
我在這裏有點困惑,你沒有發佈任何json到那個URl,你只是編碼POST參數,所以當然它會告訴你,沒有json來驗證。 – brthornbury
代碼的第一部分好的,我明白我的錯誤,但第二部分呢? – user1666141