2013-08-28 101 views
-1

在API文檔它說JSP讀取從http請求接收到的請求主體

缺省情況下,請求查找的結果是在生產線中由行響應的主體可用的,鍵=值格式。例如,如下一個典型的結果可能被格式化:

--START:447777777777 status="ok" mcc="234" mnc="02"
operatorname="O2" isoalpha3code="GBR" END:447777777777--

所以,我送請求

http://api.txtnation.com/Networks/Lookup?username=user123&password=pwd123& 
msisdn=447766551112 

String addParam=java.net.URLEncoder.encode("username", "UTF-8") 
         + "=" 
         + java.net.URLEncoder.encode(username, "UTF-8") 
         + "&" 
         + java.net.URLEncoder.encode("password", "UTF-8") 
         + "=" 
         + java.net.URLEncoder.encode(password, "UTF-8") 
         + "&" 
         + java.net.URLEncoder.encode("msisdn", "UTF-8") 
         + "=" 
    + java.net.URLEncoder.encode(msisdn, "UTF-8") 

java.net.URL msisdnLookup= new java.net.URL("http://api.txtnation.com/Networks 
/LookUp/?"+addParam); 

java.net.HttpURLConnection mmpostback = (java.net.HttpURLConnection) 
msisdnLookup.openConnection(); 
mmpostback.setDoOutput(true); 
mmpostback.setRequestMethod("GET"); 

它顯示我的HTTP響應:OK

System.out.println(mmpostback.getResponseMessage()); 

但是下面給我看NULL ..

status=request.getParameter("status"); 
mcc=request.getParameter("mcc"); 
mnc=request.getParameter("mnc"); 

我甚至嘗試讀取參數和信息,但是我無法找到上述業者名稱,狀態,MCC,MNC,operatorname,isoalpha3code

我如何可以讀取JSP請求主體?請建議

+0

非常不鼓勵在JSP頁面中使用邏輯。你應該有一個DAO或一些控制器。 –

+0

@RobinJonsson ..但這不是我想要的評論..如何閱讀請求正文中的上述內容? –

+0

即使在您更新後仍然正在讀取請求。你需要閱讀迴應。 –

回答

0

雖然您發送的請求沒有包含狀態參數。 如果您使用用戶名再次嘗試,您應該成功。

request.getParameter("username") 

根據您更新的答案,您應該查看答案而不是請求。

從JSP,您如何發送HTTP請求?如果您使用的是Ajax,那麼您可以在成功處理程序中獲得響應。

如果你使用的是HttpClient,那麼你可以再次得到一個響應。

根據您的更新(使用URLConnection的),你可以使用的getHeaderField方法

看到http://docs.oracle.com/javase/7/docs/api/java/net/URLConnection.html#getHeaderField(java.lang.String)

如果數據是在迴應的身體那麼你可以使用URLConnection.getContent()或URLConnection的。 getInputStream()

另一種替代方法是使用Apache HTTPClient類,它更靈活和更容易使用恕我直言。請參閱http://hc.apache.org/httpclient-3.x/methods.html

+0

我們只允許發送msisdn,用戶,pwd ..他們會迴應我們的那些..狀態,mcc,mnc在響應身體..所以如何閱讀這些? –

+0

所以如果它們在響應主體中,它們可能不會在請求頭中。 –

+0

嗨..你明白我的問題嗎?爲什麼我應該閱讀我自己的參數?他們向我發送有關msisdn的信息,我將它們發送到他們的HTTP URL中......並且他們將Body中的msisdn的信息發送出去。不是在HTTP標頭中,也不在查詢字符串中。那麼,怎樣才能讀取正文部分? ? –