【问题标题】:httprequest in android fails and exception is nullandroid中的httprequest失败并且异常为null
【发布时间】:2012-06-12 13:16:53
【问题描述】:

我有一个抛出 null 异常的 HTTP 请求。

代码如下:

public String updateRounds() {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("https://technet.rapaport.com/HTTP/Prices/CSV2_Round.aspx");

    // Add your data
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
    nameValuePairs.add(new BasicNameValuePair("Username", _user));
    nameValuePairs.add(new BasicNameValuePair("Password", _password));
    try {
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    ResponseHandler<String> responseHandler = new BasicResponseHandler();
    String response = "";
    // Execute HTTP Post Request
    try {
        response = httpclient.execute(httppost, responseHandler); // it gets
                                                                  // exception
                                                                  // here
    } catch (Exception e) {
        e.getMessage(); // e is null
    }

    return response;
}

有人知道为什么会这样吗?

【问题讨论】:

  • 您的应用程序是否获得了 UsesInternet 权限?还可以尝试捕获 httpclient 可以抛出的其他类型的异常,而不是泛型类型

标签: android http-request


【解决方案1】:

感谢大家的帮助。 我改了

e.getMessage();

e.printStackTrace();

我看到异常是关于 ssl 证书的。 所以我处理了它,现在它可以工作了。 谢谢大家。

【讨论】:

    【解决方案2】:

    您在关注时遇到问题。

    String response = "";
        // Execute HTTP Post Request
        try {           
            response = httpclient.execute(httppost, responseHandler); //it gets exception here
    

    什么是responseHandler?

    httpclient.execute 返回HttpResponse,而您正试图在response(即字符串)中返回它。

    所以改变

      String response 
    

    HttpResponse response
    

    如果你真的想返回字符串,请添加以下代码。

        bufferedReader = new BufferedReader(
                   new InputStreamReader(response.getEntity().getContent()));
           StringBuffer stringBuffer = new StringBuffer("");
           String line = "";
           String LineSeparator = System.getProperty("line.separator");
           while ((line = bufferedReader.readLine()) != null) {
            stringBuffer.append(line + LineSeparator); 
           }
    
          bufferedReader.close();  
          return stringBuffer.toString();
    

    【讨论】:

    • 好吧,我相信这不是很正确。 httpclient 确实返回一个字符串。
    • BasicResponseHandler 处理响应并返回字符串。所以那一点没有错。
    • 我粘贴在这里的代码在我的最后工作。所以想帮助你。谢谢:)
    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 2019-04-06
    • 2022-07-20
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    相关资源
    最近更新 更多