簡體   English   中英

為什么無法讀取此json,但瀏覽器可以

[英]Why can't read this json, but Browser can

我不明白為什么我不能閱讀此json鏈接,但瀏覽器Chrome可以閱讀,我嘗試使用其他鏈接,但我閱讀了它們。

這是請求json響應的鏈接

我的代碼:

  runOnUiThread(new Runnable() {
            @Override
            public void run() {

new sendToken().execute("http://admin:123@qlvb-snv.newsaigonsoft.com/push-notifications-portlet/api/secure/jsonws/pushnotificationsdevice/add-push-notifications-device?token=cNAXYNQSPHk:APA91bF86THzkPE_ol9euea1M40x6jVgN9RjUOISVtL-UEXDYpAP62aeRnUwkLrSt6z8C4saTJPKW5CJ57VSRmovZ5OBX4NsZg3U-zoDdXB64dWzAQGB7WllGvqGEO3Nt4_Fbg-vUyok&platform=android");

 }
    });

和我的AsyncTask:

class sendToken extends AsyncTask<String, Integer, String> {

    @Override
    protected String doInBackground(String... params) {
        return docNoiDung_Tu_URL(params[0]);
    }

    @Override
    protected void onPostExecute(String s) {
         Log.d("Respones: ", s + "");
    }
}

它沒有任何回應。

像這樣更改您的doInBackground

class sendToken extends AsyncTask<String, Integer, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

    }

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

            HttpClient httpclient = getNewHttpClient();
            HttpGet httpget = new HttpGet(arg0[0]);
            // Execute HTTP get Request
            HttpResponse response = httpclient.execute(httpget);
            HttpEntity entity = response.getEntity();
            String responseString = EntityUtils.toString(entity, "UTF-8");

            return responseString;
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        Log.d("Respones: ", s);
    }

還要將依賴項添加到build.gradle

compile('org.apache.httpcomponents:httpcore:4.4.1') {
        exclude group: 'org.apache.httpcomponents', module: 'httpclient'
    }

不要忘記添加互聯網權限以顯示

<uses-permission android:name="android.permission.INTERNET"/>

可能有兩件事

您的方法docNoiDung_Tu_URL不正確或編寫正確,或者您無權訪問Internet。

您必須撥打http電話

HttpURLConnection urlConnection = null;
String My_URL = "YOUR URL";
BufferedReader reader = null;
URL url = null;
String Json;
InputStreamReader inputStream1 = null;
InputStream inputStream = null;

里面做背景

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


        try {
            url = new URL(My_URL);
            urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("GET");
            urlConnection.connect();

            if(urlConnection.getResponseCode() == 200)
            {

                 inputStream = urlConnection.getInputStream();
                Json =   readData(inputStream);



            }
            else {

              urlConnection.getResponseCode();
            }

        }catch (Exception e){
            Json = e.toString();
        }
        finally {
           if (urlConnection!=null)
            urlConnection.disconnect();
            try {
                if (inputStream!=null)
               inputStream.close();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return Json;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
       // your work
    }

    public String readData(InputStream inputStream)
    {
        StringBuilder builder = new StringBuilder();
        try {


            if (inputStream != null) {
                inputStream1 = new InputStreamReader(inputStream);
                reader = new BufferedReader(inputStream1);

                String line = reader.readLine();
                while (line != null) {
                    builder.append(line);
                    line = reader.readLine();
                }
            } else {
                Toast.makeText(MainActivity.this, "errorwa", Toast.LENGTH_SHORT).show();
            }
        }catch (Exception e){}
        return builder.toString();
    }

您不能直接從URL中讀取響應。

試用以下代碼:

public JSONObject getJSONFromUrl(String url) {

   static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";

        // Making HTTP request
        try {
            // defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "n");
            }
            is.close();
            json = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        // 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;

    }

在清單中添加以下權限

<uses-permission android:name="android.permission.INTERNET"/>

暫無
暫無

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

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