我尝试从Windows Phone应用程序向使用Java-WS (和提供者实现)运行的web服务发送一个非常基本的XML字符串,并检索响应。我可以看到字符串正确无误(通过服务器上的TCP监视器),但是web服务立即导致一个异常,说明源对象为null。请注意,使用Java作为客户端,我可以得到一个响应(带有TCP监视器中列出的相同请求字符串),尽管我的实现略有不同。下面是我在.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);
}结果始终是空字符串,因为服务器在发生异常时返回null。我觉得我遗漏了一些简单的东西,比如头部或编码。如果有用的话,下面是客户端的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();发布于 2012-06-12 20:32:05
您必须更改此行:
wc.Headers["Content-Type"] = "text/xml"; 您应该注意到,您漏掉了一个破折号=)
https://stackoverflow.com/questions/10964757
复制相似问题