【问题标题】:Https request not reaching to server androidHttps请求未到达服务器android
【发布时间】:2014-10-15 14:52:06
【问题描述】:

我正在尝试访问 HTTPS 请求,但是当我尝试从我的 Android 应用程序访问它时,它无法访问服务器,但相同的 url 在 chrome http 客户端上工作正常。

这是我的 POST HTTP 请求代码

 public String POST(String url){
    InputStream inputStream = null;
    String result = "";
    try {
        String jsonreply;
        StringBuilder builder = new StringBuilder();
        HttpClient client = getNewHttpClient();
        HttpPost httpPost = new HttpPost(url);
        Log.d(TAG, "URLS"+url);
        try {
            HttpResponse response = client.execute(httpPost);
            StatusLine statusLine = response.getStatusLine();
            int statusCode = statusLine.getStatusCode();
            if (statusCode == 200) {
                HttpEntity entity = response.getEntity();
                InputStream content = entity.getContent();
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(content));
                String line;
                while ((line = reader.readLine()) != null) {
                    builder.append(line);
                }
            } else {
                Log.d(TAG, "Status code"+statusCode);
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();

        } catch (IOException e) {
             e.printStackTrace();
        }
        jsonreply = builder.toString();
        return jsonreply;

    } catch (Exception e) {
        Log.d("InputStream", e.getLocalizedMessage());
    }

    // 11. return result
    return result;
}

代码总是返回 statusCode 404(未找到)。我非常确定 url 是正确的,因为我也在其他应用程序中访问相同的 url。 我不能提供原始网址,但假的但类似的是这个

https://test.test.se/user_session.json?email=test.test%40gmail.se&password=>Test12345%21%40%23%24&brand=LGE&phonemodel=Nexus+5&os_version=4.4.4&os_type=Android

感谢您的帮助

【问题讨论】:

  • 你的服务器有自签名证书吗?
  • 您在示例中以 GET 方式提供参数,这是有意的吗?
  • 是的,我的服务器有自签名证书,我的服务正在返回一些数据,这就是我添加 GET 的原因,我想我错了

标签: android json web-services http https


【解决方案1】:

将您的网址传递给此函数..

public static String readFeed(String URL) {

    StringBuilder stringBuilder = new StringBuilder();
    HttpClient client = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet(URL);
    try {
            HttpResponse response = client.execute(httpGet);
                HttpEntity entity = response.getEntity();
                InputStream content = entity.getContent();
                BufferedReader reader = new BufferedReader(new InputStreamReader(content));
                String line;
                while ((line = reader.readLine()) != null) 
                {
                    stringBuilder.append(line);
                }

    } catch (ClientProtocolException e) 
    {
        e.printStackTrace();
    } catch (IOException e)
    {
        e.printStackTrace();
    }
return stringBuilder.toString();
}

结果以字符串格式返回。

【讨论】:

  • 但它是 GET 请求,我的是 POST
【解决方案2】:

使用这个.. 尝试 { HttpClient httpclient = new DefaultHttpClient();

            HttpContext localcon=new BasicHttpContext();
            HttpGet httpget=new HttpGet(url1);

            HttpResponse response=httpclient.execute(httpget,localcon);
            } catch (ClientProtocolException e) {

                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

【讨论】:

    猜你喜欢
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 2020-01-20
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多