我正在爲WCF的Java客戶端工作,並有模板工作得很好。我最初使用eclipse的web服務客戶端項目,但後來發現android平臺不支持所需的庫。然後我打算用KSOAP,但它給了我很多的問題,所以我得到了一個工作SOAP請求副本請求正在包裝CDATA
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/ITransferService/getInt</Action>
</s:Header>
<s:Body>
<getInt xmlns="http://tempuri.org/">
<i>42</i>
</getInt>
</s:Body>
</s:Envelope>
,並決定將,將採取在價值和它貼在那裏模板42去。當我打印出來時,它看起來應該很好,但我注意到當我追蹤到我的請求被包裝在CDATA標籤中時。
<MessageLogTraceRecord><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/ITransferService/getInt</Action>
</s:Header>
<s:Body>
<getInt xmlns="http://tempuri.org/">
<i>100</i>
</getInt>
</s:Body>
</s:Envelope>
]]></MessageLogTraceRecord>
我不確定爲什麼它被包裝在CDATA中,我使用HttpURLConnection來創建和發送連接。處理該代碼的代碼如下所示。
private static void sendRequest(String request) throws Exception
{
URL u = new URL(DEFAULT_SERVER);
URLConnection uc = u.openConnection();
HttpURLConnection connection = (HttpURLConnection)uc;
connection.setRequestProperty("content-type", "text/html; charset=utf8");
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("SOAPAction",SOAP_ACTION);
OutputStream out = connection.getOutputStream();
Writer wout = new OutputStreamWriter(out);
wout.write(request);
wout.flush();
wout.close();
System.out.println(connection.getResponseMessage());
}
請求變量是上面顯示的內容,至少包含在CDATA標記中。當我調用System.out.println(connection.getResponseMessage());那麼它會告訴我不支持的媒體類型。 我正在使用文本作爲WCF服務器的綁定配置中的messageEncoding
有沒有人有任何關於如何讓我的java客戶端正確發送數據而不是在cdata包裝中的建議?
感謝 尼克龍
編輯: 我改變了這一行
connection.setRequestProperty("content-type", "text/html; charset=utf8");
這個
connection.setRequestProperty("content-type", "text/xml");
喜歡它大概應該已經開始。我現在得到500內部服務器錯誤,所以我不確定我是否接近或不接近。任何建議仍然非常感謝
對不起,點擊提交之前,我的意思是,不知道這是怎麼回事 – nick 2012-02-21 20:29:03
肯定會禮貌的爲那些downvoted不完整的問題,以糾正這一點。 – 2012-02-21 20:30:56