如何将多个数据标签添加到BufferedWriter?

时间:2016-09-23 11:57:20

标签: php android web-services post

我的Android应用程序将字符串数据上传到PHP Web服务。如果我将自己限制在一个单一的数据中,这通常有效。但是,我需要在PHP脚本中识别不同的数据集。

这是我尝试的:

URL url = new URL("....script.php") // This is my webservice
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequest("POST");
conn.setDoOutput(true);
conn.setDoInput(true);

OutputStream outputStream = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter( new OutputSteramWriter(outputStream, "UTF-8"));

writer.write("datum1=" datum1json.toString());
writer.newLine();
writer.write("datum2=" datum2json.toString());

writer.close();
outputStream.close();
...

我的PHP脚本就像那样开始

if(isset($_POST['datum1']) && isset($_POST['datum2'])) {

$json1 = json_encode($_POST['datum1']);
$json2 = json_encode($_POST['datum2']);

echo $json1;
echo $json2; }

只要我将一个数据附加到我的编写器(writer.write("datum1=....)并且只测试php中的一个传入变量,一切正常。在我的情况下,我得到一个EOFException

java.io.EOFException
   at libcore.io.Streams.readAsciiLine(Streams.java:203)
   at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:560)
   ...

我不怀疑PHP文件,因为它适用于一组。

如何将两个带标识符的不同数据集附加到编写器?

我也试过writer.write("datum1=" datum1json.toString() + "datum2=" datum2json.toString());,但没有成功。

我知道不同的POST请求方法(HttpDefaultClient,..),但我不太熟悉它们,我的要求和数据大小实际上很低。

谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个,

String datum1 = URLEncoder.encode(datum1json.toString(), "UTF-8");
String datum2 = URLEncoder.encode(datum2json.toString(), "UTF-8");

String params = "datum1=" + datum1 + "&" + "datum2=" + datum2;

BufferedWriter writer = new BufferedWriter( new OutputSteramWriter(outputStream, "UTF-8"));
writer.write(params);
writer.close();
outputStream.close();