2015-12-19 2 views
1

Я разрабатываю приложение для Android с помощью JAVA в Android Studio IDE. Я пытаюсь отправить запрос HTTP-сообщения из своего приложения, чтобы получить ответ от сервера как XML.HTTP POST-запрос с указанным номером порта

Когда я бегу

HttpClient httpClient = new DefaultHttpClient(); 
HttpPost httpPost = new HttpPost("100.1.1.1"); 

Она работает без каких-либо исключений, но когда я использую порт в URL, как

HttpClient httpClient = new DefaultHttpClient(); 
HttpPost httpPost = new HttpPost("100.1.1.1:8081"); 

приложение предупреждает меня «К сожалению, приложение остановилось» и выходов ,

Реальные IP-адреса в этой должности, были заменены 100.1.1.1

Мой вопрос: «почему он не работает с номером порта в URL?» и если есть лучший способ получить данные с веб-сервера по URL-адресу и Query Strings, что это именно так.

URL-адрес, который возвращает данные в виде XML, как:

100.1.1.1:8081/?FindResults & Parameter1 & Parameter2 & параметр3

Любая помощь будет оценена.

ответ

0

Попробуйте использовать HttpPost(URI) конструктор insted из HttpPost(String). Думайте, что это сработает.

0

Попробуйте добавить порт отдельно, как в коде ниже:

private static final int HTTP_PORT = 8081; 

private static final String USER_AGENT_NAME = "http.useragent"; 

private static final String USER_AGENT_VALUE = "Mozilla/5.0 (Linux; U; Android 1.1; en-us;dream) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2"; 


protected DefaultHttpClient getHttpClient() throws KeyManagementException, UnrecoverableKeyException, 
NoSuchAlgorithmException, KeyStoreException, CertificateException, IOException { 
    if (httpClient == null) { 

     SchemeRegistry schemeRegistry = new SchemeRegistry(); 
     schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), HTTP_PORT)); 

     HttpParams params = new BasicHttpParams(); 
     params.setParameter(USER_AGENT_NAME, USER_AGENT_VALUE); 
     HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); 
     HttpProtocolParams.setContentCharset(params, HTTP.UTF_8); 

     ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(params, schemeRegistry); 
     httpClient = new DefaultHttpClient(cm, params); 
    } 
    return httpClient; 
} 

При принятии запроса HTTP убедитесь, что порт не включен больше.

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