【问题标题】:Android HTTP request wierd 404 not found issueAndroid HTTP 请求奇怪的 404 未找到问题
【发布时间】:2012-06-05 20:13:37
【问题描述】:

在我的应用程序中,我正在尝试使用以下代码访问一个 URL

  try {
    url = new URL(serverURL);

    httpURLConnection = (HttpURLConnection) url.openConnection();

    int timeout = 30000;
    httpURLConnection.setConnectTimeout(timeout);
    httpURLConnection.setReadTimeout(timeout);

    httpURLConnection.connect();

    String httpResponseMessage = httpURLConnection.getResponseMessage();
    responseCode = httpURLConnection.getResponseCode();

    Log.i(LOG_TAG,"Response code "+responseCode);

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

通过浏览器(在计算机和手机上)打开(机密)URL 时,可以完美运行,并且响应符合预期。但是当我通过上面的代码访问相同的 URL 时,它给了我响应代码 404(未找到)。谁能告诉我可能是什么问题? (抱歉,由于高度机密,无法发布该网址。)

【问题讨论】:

  • 您是否尝试过使用相同代码的不同网址?
  • 是的,对于其他 URL,响应码是预期的 200。
  • 那么你能在手机浏览器中打开那个 URL 吗? (如果是防火墙配置问题)
  • 什么?哪个网址?工作正常的那个?还是另一个?我想根据响应代码做一些动作,当我通过浏览器和应用程序点击相同的 URL 时,行为是不同的。我得到的响应码分别是 200 和 404。
  • 我的意思是无效的 URL。你是用手机浏览器还是电脑浏览器测试?

标签: android http http-status-code-404


【解决方案1】:

您确定在您的AndroidManifext.xml 中声明了android.permission.INTERNET

【讨论】:

  • 是的。我也可以做其他与互联网相关的活动。
  • 如果 Manifest 中没有授予权限,则甚至不会是响应代码
【解决方案2】:

问题解决了:)

      try {

            url = new URL(serverURL);

            Log.i(LOG_TAG, url+"");
            HttpGet method= new HttpGet(new URI(serverURL));
            HttpClient client = new DefaultHttpClient();
            HttpGet request = new HttpGet();
            request.setURI(new URI(serverURL));
            HttpResponse response = client.execute(method);
            responseCode = response.getStatusLine().getStatusCode();

            Log.i(LOG_TAG,"Response code response "+response);
            Log.i(LOG_TAG,"Response responseCode "+responseCode);
        } catch (Exception e) {
            e.printStackTrace();
        }

【讨论】:

  • 您是否首先弄清楚导致错误的原因
【解决方案3】:

实际上,您甚至不需要在代码中添加以下两行代码。

HttpGet request = new HttpGet();
request.setURI(new URI(serverURL));

一个HttpGet就足够了,你不需要两次。

【讨论】:

    【解决方案4】:

    不确定这是否重要,但我遇到了确切的问题。

    我正在做一些明确的端口 80 的东西,删除这一行使其工作:

    HttpHost host = new HttpHost(targetHost, 80, "http");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 2017-09-01
      • 1970-01-01
      相关资源
      最近更新 更多