获取请求HttpUrlConnection - 响应不正确

时间:2017-12-07 07:23:32

标签: android get httpurlconnection

我正在使用Android App,App正在使用GET Request来连接服务器。 我编写的用于连接服务器的代码在许多设备上都能正常运行。 但是它没有在LENOVO YOGA TAB3上给出好的回复,它会返回Html标签而不是JSON文字。首先,我感到困惑的是API网址中可能存在某些问题但我使用浏览器检查了URL,它返回了良好的响应,所以我确信URL是正确的。

以下是API网址及其响应:

API网址

[http://www.xyz.in/xyzapi/?building=on&address=Assotech Sandal Suites, Sector 135, Noida, Uttar Pradesh 201304, India&bill_amount=12500&type=R&fullstatename=Uttar Pradesh&lat=28.496171099999998&lng=77.4027049&state=UP&country=IN&district=Gautam Buddha Nagar&sublocality=Sector 135&calc-sess=59d4beba305f3&netmetering=1][1]

许多Android手机的响应:

{"lifetimesaving":"25.0 Lacs","proposed_pv_capacity":10,"billWithSolar":3872,"bill_amount":"12500","sanction":10,"project_cost":"6.0 Lacs","return_oninevstment":"20.8","roi_image":"solar_score6_6.png","treeadded":"346 ","treeofftheroad":"9 "}

对Lenovo Yoga Tab3的回应:

<head/><style>.personal-details h2{font-size:34px}.netmetering-tgle{position:absolute;left:0;right:0;bottom:5px;width:211px}.netmetering-tgle .wnm{float:left;position:relative;padding:0 10px 0 0;min-width:130px;text-align:center}.netmetering-tgle .wnm a{color:#c97511;background:none}#radioBtn .btn{border:1px solid transparent;border-radius:0!important;font-family:"Din-Bold"}#radioBtn .notActive{color:#c97511;background-color:#e0e1e2;padding:2px 0;width:38px;background-size:100% 100%;border-color:transparent;font-family:"Din-Bold";border-radius:5px}#radioBtn .active{color:#fff;background-color:#addc6f;border-color:transparent;padding:2px 5px;width:38px;cursor:auto;pointer-events:none;border-radius:5px;box-shadow:inset 0 0 10px rgba(0,0,0,.8)}#radioBtn .notActive[data-

因此,瑜伽Tab3上的响应不正确

以下是我用来连接服务器的代码:

    public static String connectToServerUsingGETMethod(String API_COMPLETE_URL){

    URL url;
    HttpURLConnection urlConnection = null;
    try {
        url = new URL(API_COMPLETE_URL);

        urlConnection = (HttpURLConnection) url.openConnection();
        InputStream in = urlConnection.getInputStream();

        InputStreamReader isr = new InputStreamReader(in);

        String line = "";
        BufferedReader reader = new BufferedReader(isr);
        StringBuilder sb = new StringBuilder();
        while ((line = reader.readLine()) != null) {
            sb.append(line);
        }
        //get the string version of the response data
        return sb.toString();

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (urlConnection != null) {
            urlConnection.disconnect();
        }
    }

    return "";
}

建议我如果我可以在此代码中添加一些内容,以便它也可以在Yoga Tab 3上运行。

1 个答案:

答案 0 :(得分:0)

我认为您在发出请求时应设置静态内容类型,以确保发回的响应是JSON。同样,它看起来如下:

HttpURLConnection urlConnection = null;
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");

希望它适合你。