2013-11-19 2 views
0

Я использую HttpListener для реализации простого HTTP-протокола для моей службы подключения. Когда я подключаюсь к нему с браузером, он работает нормально, но если я использую Android DefaultHttpClient, я получаю «400 Bad Request».Ошибка HTTP HTTP HttpListener 400

C# код:

httpListener = new HttpListener(); 
httpListener.Prefixes.Add(String.Format("http://*:{0}/", port)); 
httpListener.Start(); 

Java код:

HttpPost post = new HttpPost(path); 
HttpClient client = new DefaultHttpClient(); 
HttpHost httphost = new HttpHost(host, port); 

StringEntity body = new StringEntity("Stuff I post", "UTF-8"); 
body.setContentType("text/xml"); 
post.setEntity(body); 

response = client.execute(httphost, post); 
StatusLine status = response.getStatusLine(); 

Нигде я могу узнать, что именно пошло не так, все это я получаю "400 Bad Request". Когда я смотрю на POST, слушая простой порт, то, что я вижу, выглядит нормально.

Разочарование заключается в том, что он работал несколько дней назад.

ответ

0

Похоже, что сервер ожидает XML (судя по словам «text/xml»), и вы отправляете простой текст, поэтому APPLICATION на сервере жалуется «400 Bad Request», то есть он не может разобрать XML , Попробуйте отправить XML в формате, ожидаемом сервером, или даже попробуйте отправить указанный выше запрос на тестовую страницу, например, простой PHP с <?php var_dump($_POST);. Если тестовая страница возвращает 200 OK, запрос работает должным образом, и вам придется работать в формате XML, ожидаемом сервером.

+0

Он даже не добирается. Это 'HttpListener', который бросает 400. Оказалось, что у меня отсутствовал ведущий'/'на моем пути. –

0

Оказывается, я должен начать свой путь с /.

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