2013-03-04 70 views
-1

我的代碼如下所示,並打印出客戶端的所有輸入。HTTP Post issue

除此之外,當我嘗試閱讀,無後數據來自通過......

while ((s = input.readLine()) != null){ 
    System.out.println(s); 
} 

我的帖子的數據:

POST/HTTP/1.1 
Host: localhost 
Connection: keep-alive 
Content-Length: 27 
Cache-Control: max-age=0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Origin: (http://) localhost 
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22 
Content-Type: application/x-www-form-urlencoded 
Referer: (http://) localhost/ 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 

所以我不收到任何數據,除了我把表格放入我的HTML中

<form method="post"> 
    TestText: <input type="text" name="test1"><br> 
    TestText2: <input type="text" name="test2"> 
    <input type="submit" value="Submit"> 
</form> 

那麼有什麼想法?

我編寫自己的HTTP服務器,所以我已經實現了一個方法來獲取POST,GET和其他的東西

+1

你使用Apache HttpClient或Servlet或其他技術? – 2013-03-04 17:35:27

+0

我可以看到您的表單沒有任何操作,可能會導致問題。 – 2013-03-04 17:36:37

+0

如果它沒有操作屬性,它會自行發佈。我不知道這是他想做的事。 – 2013-03-04 17:38:25

回答

1

因爲我還不能發表評論(感謝SO),我要發佈我的評論作爲答案。

由於Content-Length標頭不是0,我假定請求主體確實包含表單數據,即使您沒有將其包含在您的發佈數據中。

如果是這樣,那麼我們需要看看input變量來自哪裏,以便知道它爲什麼不包含預期數據。我建議你修改你的問題並添加設置input變量的代碼。

+0

這是問題,Content-Length顯示一個數字,但我不接收POST數據。 input是一個'InputStream'類,它是套接字的輸入流。 – KeirDavis 2013-03-05 07:47:08

+0

在這種情況下,我不太清楚如何在'input'變量上調用readLine(),因爲'InputStream'接口沒有readLine()方法。 而是,我會嘗試: 'StringBuilder str = new StringBuilder(); int s;當((s = input.read())> -1) str.append(s); System.out.println(str.toString());' – bluecollarcoder 2013-03-06 00:36:33