Reputation: 359
I'm trying to send a very basic XML string from a Windows Phone application to a web service run with Java-WS (and the Provider implementation), and retrieve the response. I can see that the string makes it (via TCP monitor on the server) and looks correct, but the web service immediately causes an exception saying that the source object is null. Note that using Java as the client, I can get a response back (with the same request string listed in TCP monitor), although my implementation differs slightly. Here's how I'm doing it in .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);
}
The result is always an empty string, because the server returns null on an exception. I feel like I'm missing something simple, like a header or an encoding. If it would be useful, here is the Java version of the client which works:
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();
Upvotes: 0
Views: 1154
Reputation: 57956
You must alter this line:
wc.Headers["Content-Type"] = "text/xml";
You should notice you missed a dash =)
Upvotes: 1