2013-08-28 87 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标头中,也不在查询字符串中。那么,怎样才能读取正文部分? ? –