2012-04-28 6 views
2

в моем приложении для Android Мне нужно запустить HTTP-сервер. Первоначальный вывод выглядит нормально - я могу получать запросы и обрабатывать строку URI, когда я использую браузер для перехода на страницу на этом сервере (я вижу запрос GET с полным URI со всеми параметрами). Однако, если я использую форму, которая отправляет запрос на сервер:Получение POST-данных из HttpRequest (Android)

<FORM action="http://192.168.1.107:8080/testaction" method="post"> 
    <INPUT type="text" name="textfield" /><BR> 
    <INPUT type="submit" value="Send"/> 
</FORM> 

я получаю только действие в URI (например, «/ testaction»). Я не могу понять, как получить фактические данные запроса POST.

Вот та часть, которая обрабатывает запрос в Java-коде:

public class HomePageHandler implements HttpRequestHandler { 
... 
     @Override 
     public void handle(HttpRequest request, HttpResponse response, HttpContext httpContext) throws HttpException, IOException { 

       String uriString = request.getRequestLine().getUri(); 
       Uri uri = Uri.parse(uriString); 
... 
} 

Я понимаю, что можно было бы сделать что-то неправильно в Java и/или сам HTML-форме. Просьба сообщить обоим.

ответ

4

Чтобы получить тело POST, вы можете сделать это:

if (request instanceof HttpEntityEnclosingRequest) { //test if request is a POST 
    HttpEntity entity = ((HttpEntityEnclosingRequest) request).getEntity(); 
    String body = EntityUtils.toString(entity); //here you have the POST body 
} 
+0

Спасибо, это правильный способ сделать это. Однако одной важной частью, по-видимому, было отсутствие поля имени в форме HTML. Когда имени нет, я постоянно получаю нуль в теле. Я изменил HTML-фрагмент –

+0

, когда я передаю данные как, nameValuePairs.add (новый BasicNameValuePair («json», jsonData.toString())); и когда я получаю его на сервере, в теле содержится «json = jsonData.toString()» вместо «jsonData.toString()». –

0

См here для выполнения запроса POST в андроиде ..

Чтобы перепроверить его с browser..i может порекомендовать вам нужно посмотреть в Firebug (о светлячок, аналогичен для других) консоли для запроса Ajax поста. или онлайн-инструменты, такие как http://web-sniffer.net/ или http://hurl.it

+0

Спасибо. Но я использую сервер на Android, а не на клиенте. И я использую PC Browser для подачи запросов на него. –

Смежные вопросы