JSON Post Request不包含任何参数

时间:2016-01-18 21:59:28

标签: java android html json android-studio

我的json post请求有问题。我创建了一个JsonObject并希望将其发布到服务器,但是服务器收到的post请求的主体什么都没有,我不知道为什么......

public class ServiceHandler {
    static String response = null;
    public final static int GET = 1;
    public final static int POST = 2;
    String contentType = "application/json";
    public ServiceHandler() {
}

public String makeServiceCall(String url, int method) {
    return this.makeServiceCall(url, method, null);
}

public String makeServiceCall(String url, int method, List<NameValuePair> params) {
    try {
        // http client
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpEntity httpEntity = null;
        HttpResponse httpResponse = null;

        // Checking http request method type
        if (method == POST) {
            HttpPost httpPost = new HttpPost(url);
            // adding post params
            if (params != null) {
                JSONObject jsonObj = new JSONObject();
                jsonObj.put("name", "your name");
                jsonObj.put("message", "your message");

                StringEntity entity = new StringEntity(jsonObj.toString(), HTTP.UTF_8);
                httpPost.setEntity(entity);
            }

            httpResponse = httpClient.execute(httpPost);
        } else if (method == GET) {
            // appending params to url
            if (params != null) {
                String paramString = URLEncodedUtils
                        .format(params, "utf-8");
                url += "?" + paramString;
            }

            HttpGet httpGet = new HttpGet(url);
            httpResponse = httpClient.execute(httpGet);
        }

        httpEntity = httpResponse.getEntity();
        response = EntityUtils.toString(httpEntity);
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (JSONException e) {
        e.printStackTrace();
    }

    return response;
}

1 个答案:

答案 0 :(得分:3)

提供“Content-Type”标头以使用值“application / json”进行请求。似乎服务器找不到合适的消息体映射器。