我想从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接收发布的数据并将内容保存到文本文件中。
提前致谢
答案 0 :(得分:2)
首先确保您的script.php正在收到请求。
在模拟器上测试: localhost是指运行代码的设备,如果是关于模拟器,则必须使用IP address 10.0.2.2
。
在设备上测试:如果您在物理设备上测试应用程序,则必须打开USB Tethering,然后检查设备和PC之间关联的IP地址。 (如果移动数据打开或关闭无关紧要)
在 Linux 中,您可以使用sudo ipconfig
它将对所有网络接口进行操作,从那些必须找到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请求字符串并将其写入文件。
如果字符串太大,您可能需要使用fwrite
(http://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