当前位置: 首页 > 知识库问答 >
问题:

HttpUrlConnection方法总是在android上使用

商柏
2023-03-14
URL url = new URL("http://myserver.com/myendpoint");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
//connection.setRequestMethod("POST") <- this didn't help either
connection.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.write("string=test");
out.close();
connection.close()

上面的代码在桌面JVM上工作,发送一个帖子请求,在服务器端成功解析,响应200,但是在Android系统上,请求方法保持GET(是的,我检查了它是假的),并导致404异常。官方文档表示,将doOutput设置为true会触发将请求方法设置为POST,但情况似乎并非如此。

共有3个答案

邢思淼
2023-03-14

试试吧:

js lang-js prettyprint-override">HttpURLConnection connection = (HttpURLConnection)url.openConnection();
        connection.setRequestMethod("GET");
戚宏浚
2023-03-14

将数据发布到服务器时,我会设置一些额外的请求头:

String query = "string=test";
URL url = new URL("http://myserver.com/myendpoint");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Accept-Charset", "UTF-8");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
connection.setFixedLengthStreamingMode(query.getBytes("UTF-8").length);
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.write(query);

但正如所建议的,404异常通常意味着,您试图访问的endpoint不可用。

危飞跃
2023-03-14

404也不例外。它是您向其发出请求的服务器返回的HTTP状态代码,表示未找到您向其发出请求的url。这与岗位设置与否无关。

检查事项:

  • 如果您请求的url是正确的
  • 如果服务器具有映射到您向其发出请求的url的POST控制器/处理程序
  • 询问开发服务器的人员是否正确处理案例,以及是否针对相关场景发送了正确的响应代码

额外信息:如果url已在服务上注册,但不允许POST请求,则您将获得415响应代码

 类似资料:
  • 本文向大家介绍Java HttpURLConnection使用方法详解,包括了Java HttpURLConnection使用方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Java HttpURLConnection使用,供大家参考,具体内容如下 包括使用HttpURLConnection执行get/post请求 GitHub:https://github.com/taz3

  • 本文向大家介绍android使用mysql的方法总结,包括了android使用mysql的方法总结的使用技巧和注意事项,需要的朋友参考一下 android可以使用mysql数据库,android连接数据库的方式有两种。 第一种是通过连接服务器,再由服务器读取数据库来实现数据的增删改查,这也是我们常用的方式。 第二种方式是android直接连接数据库,这种方式非常耗手机内存,而且容易被反编译造成安全

  • 我在Android Studio上写过Java代码。我做了登录方法,在我的代码中发生了一些事情。它没有返回正确的返回值。返回值始终为false。虽然我在Android Studio上检查了函数,但是布尔变量已经正确地改变了,但是它在方法的末尾又改变了,所以登录方法总是返回false&我无法继续登录。 请帮我解决这个困惑的时刻。任何回答都将不胜感激,非常感谢。

  • 我刚刚开始了解Android中的s。 当您创建一个新的空白项目时,默认情况下还包括一个,尽管它并没有真正被使用。我的印象是,谷歌希望你一直使用s,无论应用程序多么简单。这是一个真实的评估,还是你能想出不使用s的理由? 我还觉得奇怪的是,留档表明也可以用于与UI无关的内容。你能给我一个应用程序的例子,它将使用,但不提供任何UI?

  • 我试图在Android9,API28中使用HttpURLConnection。它可以在Android8.0.0、API26上工作,但不能在API28上工作。

  • 我试图为星号接口创建一个应用程序,配置设置已经做了正确的,因为我已经检查过了。 我不能从Asterisk服务器访问配置文件的原因似乎与连接有关。我需要使用cookie连接到登录会话的同一个实例。 但到目前为止,我还不能正确使用Cookie,需要一点帮助。