HTTP从Android发布到PHP后端

时间:2013-11-28 03:28:38

标签: php android

我想从Android到后端服务器执行HTTP Post,后端服务器将运行PHP脚本来接收这些数据并将内容保存到文本文件中。

对于Android HTTP Post,我正在关注可以在http://www.androidsnippets.com/executing-a-http-post-request-with-httpclient

找到的示例

但是,我找不到后端PHP部分的任何参考。最接近的是PHP上传方法http://www.php.net/manual/en/features.file-upload.post-method.php,但它适用于文件上传。

SO Get Data Sent by HttpPost in Java to php Script中有一篇旧帖子,但也没有答案。

知道如何实现这个吗?基本上我想从Android接收发布的数据并将内容保存到文本文件中。

提前致谢

3 个答案:

答案 0 :(得分:2)

首先确保您的script.php正在收到请求。

在模拟器上测试: localhost是指运行代码的设备,如果是关于模拟器,则必须使用IP address 10.0.2.2

在设备上测试:如果您在物理设备上测试应用程序,则必须打开USB Tethering,然后检查设备和PC之间关联的IP地址。 (如果移动数据打开或关闭无关紧要)

Linux 中,您可以使用sudo ipconfig

检查该IP地址

它将对所有网络接口进行操作,从那些必须找到usn0或类似的网络接口。

usb0  Link encap:Ethernet  HWaddr 06:94:c7:0d:51:43  
      inet addr:192.168.42.106  Bcast:192.168.42.255  Mask:255.255.255.0
      inet6 addr: fe80::494:c7ff:fe0d:5143/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:21 errors:0 dropped:0 overruns:0 frame:0
      TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:2016 (1.9 KiB)  TX bytes:3978 (3.8 KiB)

在这里你可以看到设备IP 192.168.42.106 所以,在Android中你应该使用URL,

http://192.168.42.106/script.php

windows 中,它具有类似的命令ipconfig

Android来源

public void postData() {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://192.168.42.106/script.php"); // <-- for Device, and for emulator--> http://10.0.2.2/script.php 

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("id", "12345"));
        nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

    } catch (ClientProtocolException e) {
       // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
} 

在Android代码中设置正确的IP后,在script.php中读取POST参数并创建一个新文件来存储该数据:

<?php
//getting data from POST request.
$arg1= $POST['id'];
$arg2= $POST['stringdata'];

//creating file
$ourFileName = "testFile.txt";
$ourFileHandle = fopen($ourFileName, 'w') or die("can't create file");

//wrinting content to file
fwrite($ourFileHandle, $arg1);
fwrite($ourFileHandle, $arg2);

//closing file
fclose($ourFileHandle);

?>

希望这会有用。 :)

答案 1 :(得分:0)

你看过file_put_contents了吗? http://us1.php.net/file_put_contents

您可以接收POST请求字符串并将其写入文件。

如果字符串太大,您可能需要使用fwritehttp://us1.php.net/manual/en/function.fwrite.php

之类的字符串来填充它

答案 2 :(得分:0)

  

以下是Doc

you should refer localhost as : 10.0.2.2

In your case u should change to  10.0.2.2/scipt.php