download12749 2016-09-23 11:57
浏览 66
已采纳

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

my Android application uploads string data to a PHP webservice. This usually works if I restrict myself to one single datum. However, I'm in a situation where I need to identify different datasets in my PHP script.

This is what I try:

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();
...

My PHP script begins like that

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

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

echo $json1;
echo $json2; }

As long as I append one single datum to my writer (writer.write("datum1=....) and only test for one incoming variable in the php, everything works fine. In my case, I get an EOFException

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

I do not suspect the PHP file, since it works with one set.

How do I attach two different datasets with identifiers to a writer?

I tried writer.write("datum1=" datum1json.toString() + "datum2=" datum2json.toString()); too, but no success.

I know about different methods of POST requests (HttpDefaultClient,..) but I'm not too familiar with them and my requirements and data sizes are actually quite low.

Thank you!

  • 写回答

1条回答 默认 最新

  • duanji4449 2016-09-23 12:24
    关注

    Try this,

    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();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?