2016-09-23 35 views
0

我的Android應用程序將字符串數據上傳到PHP web服務。如果我將自己限制爲一個單一的數據,這通常是有效的。但是,我處於需要在我的PHP腳本中識別不同數據集的情況。如何將多個數據標籤添加到BufferedWriter?

這是我嘗試:

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

試試這個,

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(); 
+1

完美。非常感謝! – s4inz