2013-08-28 2 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"); 

Я даже попытался чтения параметров и заголовки, но я не мог найти выше статус names-, 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, который является намного более гибким и простым в использовании IMHO. см. http://hc.apache.org/httpclient-3.x/methods.html

+0

we разрешено отправлять msisdn, user, pwd .. и они будут отвечать нам тем, что .. status, mcc, mnc в ответном тесте .. так, как их прочитать? –

+0

, поэтому, если они находятся в корпусе ответа, они, вероятно, не будут в заголовке запроса. –

+0

Привет .. ты понял мой вопрос ?? Почему я должен читать свои собственные параметры? Они отправляют мне информацию о msisdn, которую я отправляю им в своем HTTP-URL ... и они отправляют информацию этого msisdn в Body .. не в HTTP-заголовке, а не в строке запроса. Итак, как я могу прочитать часть тела? ? –