url返回true json但android HttpURLConnection返回false

时间:2018-01-21 15:28:00

标签: android

我有一个Https网址,它返回一个像这样的json:

{success:true, success_msg:'Register/Unregister was accomplished successfully',desc:'',redirect:false}

当我想在android中使用HttpURLConnection获取url响应时,它会返回此json:

{success:false, title:'Traffic Authentication Page',fail_msg:'Register/Unregister was failed',desc:''}

这是http utils类。我使用的是doGet(String url)方法

public class HttpUtil {
    static {
        try {
            TrustManager[] trustAllCerts = { new X509TrustManager() {
                public X509Certificate[] getAcceptedIssuers() {

                    return null;
                }

                public void checkClientTrusted(X509Certificate[] certs,
                        String authType) {
                }

                public void checkServerTrusted(X509Certificate[] certs,
                        String authType) {
                }
            } };
            SSLContext sc = SSLContext.getInstance("SSL");

            HostnameVerifier hv = new HostnameVerifier() {
                public boolean verify(String arg0, SSLSession arg1) {
                    return true;
                }
            };
            sc.init(null, trustAllCerts, new SecureRandom());

            HttpsURLConnection
                    .setDefaultSSLSocketFactory(sc.getSocketFactory());
            HttpsURLConnection.setDefaultHostnameVerifier(hv);
        } catch (Exception localException) {
        }
    }

    private static HttpUtil httpUtil;

    HttpUtil() {
    }

    public static HttpUtil getHttpUtil() {
        if (httpUtil == null)
            httpUtil = new HttpUtil();

        return httpUtil;
    }

    public String doGet(String url) throws Exception {

        // configure the SSLContext with a TrustManager

        URL urlObj = new URL(url);
        HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
        conn.setDoOutput(true);

        String line;
        StringBuffer buffer = new StringBuffer();
        BufferedReader reader = null;
        try
        {
            reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            while ((line = reader.readLine()) != null) {
                buffer.append(line);
            }
        } catch(Exception localException) {

        }
        reader.close();
        conn.disconnect();

        return buffer.toString();
    }
}

当我记录网址时,它似乎是正确的。我通过来自用户的params在asynctask doInBackground中生成url。这个url返回true json但是通过android返回false json发送这个请求。为什么它返回false?请帮帮我。

2 个答案:

答案 0 :(得分:0)

Json中的true和false值由0和1设置 并使用Boolean.valueOf("1") => return true将其转换为实际值

答案 1 :(得分:0)

我的解决方案已经解决。我只是删除了conn.setDoOutput(true);,因为在GET方法中没有输出流。

这个问题帮助了我:What is the use of HttpURLConnection class's setDoOutput & setDoInput methods