JSP读取请求体从http请求中接收

时间:2013-08-28 07:23:06

标签: java jsp http

在API文档中说

  

默认情况下,请求查找的结果在响应正文中以逐行,键=值格式提供。例如,典型结果的格式如下:

     

--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响应:确定

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

但以下显示我是NULL ..

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

我甚至尝试过阅读参数和标题,但我找不到上面的名字 - 状态,mcc,mnc,operatorname,isoalpha3code

如何在jsp中读取请求体?请建议

1 个答案:

答案 0 :(得分:0)

您发送的请求不包含status参数。 如果你再次使用用户名,你应该成功。

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