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

Android HttpPost将空$_Post发送到PHP脚本

魏煜祺
2023-03-14

我一直试图从我的Android应用程序向一个URL发送一个POST请求,但我得到的只是一个空的$_POST。下面是我的代码,它运行在AsyncTask中。我在StackOverflow中查看了几个类似的问题,但没有一个能帮助我。

HttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost("http://www.somesite.com/clients/app-controller/posts.php");

try {
      List<NameValuePair> pairs = new ArrayList<NameValuePair>();
      pairs.add(new BasicNameValuePair("id", "12345"));
      pairs.add(new BasicNameValuePair("name", "John"));
      pairs.add(new BasicNameValuePair("post", "test123"));
      post.setEntity(new UrlEncodedFormEntity(pairs, HTTP.UTF_8));

      post.setHeader("Content-Type", "application/x-www-form-urlencoded");

      HttpResponse response = httpClient.execute(post);

      String text = EntityUtils.toString(response.getEntity());
      System.out.println("STATUS CODE " +  response.getStatusLine().getStatusCode());
      System.out.println("RETURN " +  text);

} catch (ClientProtocolException e) {
      System.out.println("ERROR1: " +  e.getStackTrace());
} catch (IOException e) {
      System.out.println("ERROR2: " + e.getStackTrace());
}
<?php echo "ISSET = " . isset($_POST["id"]) . isset($_POST["name"]) . isset($_POST["post"]); ?> 
STATUS CODE 200
RETURN ISSET = 
HttpPost post = new HttpPost("http://www.somesite.com/clients/app-controller/posts.php?id=1234&name=John&post=test123");

我在AndroidManifest.xml中拥有INTERNET权限。在这个相同的应用程序中,我做了另一个PHP脚本的请求,它按预期工作。

<uses-permission android:name="android.permission.INTERNET" />

有什么想法吗?

共有1个答案

湛光华
2023-03-14

如果您的HttpPost URL有“www”,请删除它并尝试。如果没有添加www。

因为,您可能已经将yoursite.com重定向到www.yoursite.com,反之亦然。在这种情况下,您的HttpPost URL应该是指定URL,而不是重定向URL。参数将在HTTP重定向过程中丢失,并执行空POST。这就是为什么服务器没有接收到您的post数据。

 类似资料:
  • 好吧,我不知道出了什么问题。我试图将表单数据从一个简单的jQuery脚本传递到我的php脚本,但由于某种原因,当我试图访问$\u POST数据时,php说$\u POST是空的? 现在开始,我有以下jQuery和php脚本 jQuery PHP var post的控制台日志是这样的 而$U POST的var_dump则说明了这一点 我不知道为什么这会给我带来如此多的问题,所以任何帮助都将不胜感激。

  • 以下是我如何发送: 或者像这样(两者都试过): 在接收端,如果我访问$\u POST,则它是空的。如果我访问文件\u获取\u内容('php://input“),然后它包含我的json。 这是怎么回事?

  • 问题内容: 我有由函数 .push 制成的数组。数组中的数据非常大。如何将此最佳方式发送到PHP脚本? script.php: 最好的方法是什么? 问题答案: 将您的数据字符串编码为JSON。 在你的PHP中 注意 通过POST发送数据时,它必须作为键值对。 从而 是错的。而是:

  • 问题内容: 什么是场景 我想从Android向服务器发送多个ArrayList(通常为5个),并将其插入到mysql数据库中。 我成功完成的工作 我已使用JSON成功将Android中的单个值和多个值发送到PHP脚本 我已经使用JSON从mysql数据库到android接收了单条记录和多条记录 这是用于从服务器插入值并从中获取价值的代码 和TeacherAuthen.php脚本 我被困在那里 我没

  • 我有一个CSS样式的表单。当我保留CSS样式时,reCAPTCHA小部件不会在$\u POST数据中发送“reCAPTCHA_挑战_字段”和“reCAPTCHA_响应_字段”。他们导致我的$resp总是计算为false。 我发现,如果删除id=“contactform”属性,则reCAPTCHA工作正常。 这是我的表格代码: 我的CSS样式如下: 我的服务器端处理表单的php是quickstart

  • item_ids是一个传入的数组,它本质上是@[1234,1235],只是几个数字。接收此请求的web服务没有为$_POST设置任何内容,但是我发送的JSON确实显示在$HTTP_RAW_POST_DATA中。这是为什么?是我的请求做错了什么,还是更有可能是服务器端出现了问题? 提前感谢!