【问题标题】:Call external URL from android and get response从 android 调用外部 URL 并获得响应
【发布时间】:2011-02-03 17:43:36
【问题描述】:

我正在尝试使用 android 调用 URL

HttpClient mClient= new DefaultHttpClient()

HttpGet get = new HttpGet("www.google.com ");

mClient.execute(get);

HttpResponse res = mClient.execute(get);

但是,我没有得到任何回应。如何在 Android 中调用 URL?

【问题讨论】:

  • 第一行缺少分号;

标签: android url call


【解决方案1】:

这是一个完整的例子:

        DefaultHttpClient httpclient = new DefaultHttpClient();
        HttpGet httpget = new HttpGet(yourURL);
        HttpResponse response = httpclient.execute(httpget);
        in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
        StringBuffer sb = new StringBuffer("");
        String line = "";
        String NL = System.getProperty("line.separator");
        while ((line = in.readLine()) != null) {                    
            sb.append(line + NL);
        }
        in.close();
        String result = sb.toString();
        Log.v("My Response :: ", result);

使用带有协议“https://”的网址

"https://www.*.com" instead of just "www.*.com"

确保您的androidmanifest.xml拥有此权限

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

【讨论】:

  • 如果可以,请发布您的日志输出副本。还要确保您的应用在清单中设置了 uses_internet 权限。
  • 对于较新的 Android 版本,您需要使用 https 或按照此处所述进行例外处理:*.com/a/50834600/2738240 否则会出现错误(请参阅 Android Studio 中的运行/调试日志)。
【解决方案2】:

您必须在 AndroidManifest.xml 文件中添加&lt;uses-permission android:name="android.permission.INTERNET"/&gt;。在&lt;manifest&gt; 元素下。

【讨论】:

    【解决方案3】:

    你打电话给mClient.execute(get) 两次。

    mClient.execute(get);
    HttpResponse res = mClient.execute(get); 
    

    【讨论】:

      【解决方案4】:

      改用截击。

          RequestQueue requestQueue = Volley.newRequestQueue(this);
          String getUrl = "http://www.google.com";
          StringRequest getRequest = new StringRequest(Request.Method.GET, getUrl, new Response.Listener<String>() {
              @Override
              public void onResponse (String response) {
                  Log.v(TAG, "GET response: " + response);
              }
          }, new Response.ErrorListener() {
              @Override
              public void onErrorResponse (VolleyError error) {
                  Log.v(TAG, "Volley GET error: " + error.getMessage());
              }
          });
          requestQueue.add(getRequest);
      

      【讨论】: