Я пытаюсь отправить очень основную строку XML из приложения Windows Phone в веб-службу, запущенную с Java-WS (и реализацию поставщика), и получить ответ. Я вижу, что строка делает это (через TCP-монитор на сервере) и выглядит корректно, но веб-служба немедленно вызывает исключение, говорящее, что исходный объект имеет значение null. Обратите внимание, что с использованием Java в качестве клиента я могу получить ответ обратно (с той же строкой запроса, указанной в мониторе TCP), хотя моя реализация немного отличается. Вот как я это делаю в .NET:Не удается отправить XML-строку в Java webservice из .NET.
string req = "<?xml version='1.0' encoding='UTF-8'?><request><requestor>WP7.1</requestor></request>";
string url = "http://mywebservice/endpoint1test";
WebClient wc = new WebClient();
wc.Headers["ContentType"] = "text/xml";
wc.UploadStringCompleted += new UploadStringCompletedEventHandler(wc_UploadStringCompleted);
wc.UploadStringAsync(new Uri(url), "POST", req);
void wc_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
{
Debug.WriteLine("Web service says: " + e.Result);
}
Результат всегда пустая строка, потому что сервер возвращает нуль на исключение. Я чувствую, что мне не хватает чего-то простого, например, заголовка или кодировки. Если было бы полезно, вот версия Java клиента, который работает:
String data = "<?xml version='1.0' encoding='UTF-8'?><request><requestor>WP7.1</requestor></request>";
// Send data
URL url = new URL(testUrl);
java.net.URLConnection conn = url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type","text/xml");
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.close();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
rd.close();
' wc.Headers ["Content-Type"] = "text/xml"; '- вы пропустили тире –
Спасибо Рубенсу - смущающе, вот и все. –