簡體   English   中英

獲得部分Json響應

[英]Getting partial Json response

我收到服務器端json響應以加載菜單,我嘗試了兩次,並給出了此錯誤消息(解析數據org.json.JSONException時出錯)。

原因是我得到了部分響應,在兩次嘗試中我都得到了不同的響應,如圖所示。 我想我沒有得到完整的json響應,只得到部分響應。 我應該怎么做才能得到完整的答復。

這是我的代碼

@Override
protected JSONObject doInBackground(String... params) {

    String path = null;
    String response = null;
    HashMap<String, String> request = null;
    JSONObject requestJson = null;
    DefaultHttpClient httpClient = null;
    HttpPost httpPost = null;
    StringEntity requestString = null;
    ResponseHandler<String> responseHandler = null;

    // get the email and password


    try {
        path = "http://xxxxxxxxxxxxxxxxxxx";

        new URL(path);
    } catch (MalformedURLException e) {

        e.printStackTrace();
    }

    try {

        // set the API request
        request = new HashMap<String, String>();
        request.put(new String("CetegoryCode"), "P");
        request.entrySet().iterator();

        // Store locations in JSON
        requestJson = new JSONObject(request);
        httpClient = new DefaultHttpClient();
        httpPost = new HttpPost(path);
        requestString = new StringEntity(requestJson.toString());

        // sets the post request as the resulting string
        httpPost.setEntity(requestString);
        httpPost.setHeader("Content-type", "application/json");

        // Handles the response
        responseHandler = new BasicResponseHandler();
        response = httpClient.execute(httpPost, responseHandler);

        responseJson = new JSONObject(response);

    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }
    try {
        responseJson = new JSONObject(response);

    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    return responseJson;

}

這是圖像

在此處輸入圖片說明

試用以下代碼以解析並獲取JSON響應:

public static JSONObject getJSONFromUrl(String url) {
    // Making HTTP request
    try {
        URL url1 = new URL(url);
        HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
        conn.setReadTimeout(10000 /* milliseconds */);
        conn.setConnectTimeout(15000 /* milliseconds */);
        conn.setRequestMethod("POST");
        conn.setDoInput(true);
        // Starts the query
        conn.connect();
        InputStream stream = conn.getInputStream();
        json = convertStreamToString(stream);

        stream.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
    // try parse the string to a JSON object
    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    // return JSON String
    return jObj;

}

static String convertStreamToString(java.io.InputStream is) {
        java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
        return s.hasNext() ? s.next() : "";
    }

在代碼中使用如下所示的getJSONFromUrl方法:

@Override
protected JSONObject doInBackground(String... params) {

    String path = null;
    String response = null;
    HashMap<String, String> request = null;
    try {
        responseJson = new JSONObject(response);
        responseJson =getJSONFromUrl("http://xxxxxxxxxxxxxxxxxxx?CetegoryCode=p");

     }catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }
 return responseJson;
}

如果您的響應返回JsonArray,則需要設置響應字符串jsonarray。 創建jsonarray實例,並用響應填充它。

如果正常,則可以在查詢字符串中附加參數,例如查詢字符串

protected Void doInBackground(String... urls) {

            /************ Make Post Call To Web Server ***********/
            BufferedReader reader = null;
            try {
                // Append parameters with values eg ?CetegoryCode=p
                String path = "http://xxxxxxxxxxxxxxxxxxx?CetegoryCode=p";
                URL url = new URL(path);
                URLConnection conn = url.openConnection();
                conn.setDoOutput(true);
                OutputStreamWriter wr = new OutputStreamWriter(
                        conn.getOutputStream());
                wr.write(data);
                wr.flush();

                // Get the server response

                reader = new BufferedReader(new InputStreamReader(
                        conn.getInputStream()));
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "");
                }

                Content = sb.toString();
                JSONArray jArray = new JSONArray(Content);
                if (jArray != null)
                    Log.e("Data", "" + jArray.length());
            } catch (Exception ex) {
                Error = ex.getMessage();
            } finally {
                try {

                    reader.close();
                }

                catch (Exception ex) {
                }
            }

            /*****************************************************/
            return null;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM