java - 无法使用 http post 请求 Android 从 URL 获取数据

标签 java android http-post

我在从服务器获取数据时遇到严重问题。

我的网址是这样的:

server_url = http://serverurl/_all

如果我从浏览器中调用它,我可以看到正在打印的数据。所以我想这与我提出请求的方式有关。我之前使用过这部分代码,例如在 php 文件中发出 post 请求时。但现在我的服务器设置不同,我知道服务器工作正常,因为我可以在浏览器和 IOS 应用程序中获取数据。

我已经尝试过这个:

try {
    HttpClient httpclient = new DefaultHttpClient();
    @SuppressWarnings("deprecation")
    //HttpPost httppost = new HttpPost(URLEncoder.encode(server_url));
            HttpPost httppost = new HttpPost(server_url);
    //httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    is = entity.getContent();
} catch (Exception e) {
    Log.e("log_tag", "Error in http connection " + e.toString());
}
// convert response to string
try {
    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
    sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null) {
        sb.append(line + "\n");
    }
    is.close();
    result = sb.toString();
    System.out.println("Result:" + result);
} catch (Exception e) {
    Log.e("log_tag", "Error converting result " + e.toString());
}

我明白了:

Result : Error 404 not found

然后,在 SO 上搜索我尝试了以下操作:

  • 删除 http://
  • 将 HttpPost 行更改为以下内容

    HttpPost httppost = new HttpPost(URLEncoder.encode(server_url));

在这种情况下,我收到此错误:

12-01 21:41:11.772: E/log_tag(28340): Error in http connection java.lang.IllegalStateException: Target host must not be null, or set in parameters. scheme=null, host=null, path=http://ec2-54-194-95-194.eu-west-1.compute.amazonaws.com/backend2/index.php/skicenter/_all
12-01 21:41:11.772: E/log_tag(28340): Error converting result java.lang.NullPointerException: lock == null
12-01 21:41:11.772: E/log_tag(28340): Error parsing data org.json.JSONException: End of input at character 0 of 

_ 字符应该有问题,或者我缺少其他内容。

你能帮我解决这个问题吗?

最佳答案

您确定正在为请求使用正确的 HTTP 谓词吗?也许这是一个 GET 请求,而您正在尝试使用 POST

关于java - 无法使用 http post 请求 Android 从 URL 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20317705/

相关文章:

java - 根据其他字段 javax.validation 的条件从选项进行字段验证

java - 运行 com.google.example.games.bc 失败

android - 升级数据库时显示进度对话框

android - 如何在android中进行HTTP身份验证?

java - 非 android 模块清理架构设置中的 Hilt

java - 无法从 HttpClient 向 Servlet doPost 方法发送请求

java - 未知标签(形式 :option) error

java - 为什么编译器拒绝访问 lambda 中的非最终变量

java - 是否可以设置超时以断开已建立的 http 连接?

http - Curl GET/POST 原始数据包括 header ?