1
我的要求是在android中使用Socket接收HTTP Post請求(內容爲JSON文件)。當我打印socket.getInputStream(),我得到:使用套接字接收來自HTTP郵件的數據
POST/HTTP/1.1
Content length:41
Content-type: application/json
Host:10.0.2.15:5001
Connection: Keep Alive
User-Agent: Apache HTTPClient/Unavailable(Java 1.4)
CRLF(Carriage return line feed)-
Actual Contents of JSON<Data>
我使用的鏈接https://forums.oracle.com/forums/thread.jspa?messageID=7076709,但它打印唯一的「內容類型:應用/ JSON 主機:10.0」(可用於41的長度)在Logcat。
我的代碼是:
serverSocket = new ServerSocket(portNumber);
while(true){
socket = serverSocket.accept();
List<String> headers = new ArrayList<String>();
String str;
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while ((str = reader.readLine()) != null)
{
headers.add(str);
if (str.startsWith("Content-Length: "))
{
break; // and don't get the next line!
}
}
int contentLength = Integer.parseInt(headers.get(headers.size() - 1).substring("Content-Length: ".length()));
for(int j=0;j<headers.size();j++)
{
Log.d("Headers:",headers.get(j));
}
StringBuilder requestContent = new StringBuilder();
int ch;
for (int i = 0; i < contentLength; i++)
{
requestContent.append((char) reader.read());
}
Log.d("The request content is: ",""+requestContent);
這是我的輸出: 接頭: POST/HTTP/1.1 的Content-Length:41
requestContent: 內容類型:應用/ JSON 主持人:10.
有人可以請指導我如何做到這一點?提前致謝!
粘貼代碼太 – waqaslam
雅IVE,爲什麼使用套接字,而不是一個HTTP庫您編輯@Waqas – user1741274
這個問題嗎? – artbristol