簡體   English   中英

從 Android 中的請求 PHP 獲取響應

[英]Get response from request PHP in Android

我在我的 android proyect 的 asynctask 中有此代碼,用於使用 PHP 將文件上傳到服務器:

URL url = new URL(args[1]);
connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setRequestMethod("POST");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("ENCTYPE", "multipart/form-data");
connection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
connection.setRequestProperty("uploaded_file", args[0]);

dataOutputStream = new DataOutputStream(connection.getOutputStream());

dataOutputStream.writeBytes(twoHyphens + boundary + lineEnd);
dataOutputStream.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\"" + args[0] + "\"" + lineEnd);

dataOutputStream.writeBytes(lineEnd);

bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable,maxBufferSize);
buffer = new byte[bufferSize];
bytesRead = fileInputStream.read(buffer,0,bufferSize);

while (bytesRead > 0){
    dataOutputStream.write(buffer,0,bufferSize);
    bytesAvailable = fileInputStream.available();
    bufferSize = Math.min(bytesAvailable,maxBufferSize);
    bytesRead = fileInputStream.read(buffer,0,bufferSize);
}

dataOutputStream.writeBytes(lineEnd);
dataOutputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

serverResponseCode = connection.getResponseCode();
String serverResponseMessage = connection.getResponseMessage();

Log.d(TAG, "Server Response is: " + serverResponseMessage + ": " + serverResponseCode);


fileInputStream.close();
dataOutputStream.flush();
dataOutputStream.close();

這是服務器端的PHP代碼:

$file_path = "./uploads/";
$file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path) ){
    echo "success";
} else{
    echo "fail";
}

一切正常,文件已正確上傳,但服務器在下面的代碼行中給我的唯一響應是:

Log.d(TAG, "Server Response is: " + serverResponseMessage + ": " + serverResponseCode);

這是:

服務器響應是:OK:200

或者:

服務器響應是:未找到:404

我想獲得出現在服務器端的字符串“成功”“失敗” ,我該怎么做? 提前致謝。

是的HttpUrlConnection#getResponseMessage只是返回 HTTP 響應消息(即 200 = HTTP OK)。 你想要做的是:

BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));


// read the contents of the connection from the bufferedreader

.getResponseMessage()是 HTTP 狀態消息,而不是請求的輸出。

您需要使用不同的函數,例如connection.getContent()或循環connection.getInputStream()

serverResponseCode = connection.getResponseCode();
String serverResponseMessage = connection.getResponseMessage();
String serverResponseContent = connection.getContent();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM