2012-06-09 3 views
0

Я пытаюсь отправить очень основную строку 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(); 
+1

' wc.Headers ["Content-Type"] = "text/xml"; '- вы пропустили тире –

+1

Спасибо Рубенсу - смущающе, вот и все. –

ответ

1

Вы должны изменить эту строку:

wc.Headers["Content-Type"] = "text/xml"; 

Вы должны заметить, если вы пропустили дефис =)

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