我的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,..),但我不太熟悉它们,我的要求和数据大小实际上很低。
谢谢!
答案 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();