我正在使用ASP.NET 4.0,並且需要在頁面上的javascript內返回一個SOAP(XML)響應到一個JSON變量。比我想能夠調用變量和它的屬性,就像你使用任何JSON變量一樣。 SOAP Web服務(.asmx)文件不在需要構建客戶端的服務器上(接收請求並將其放入JSON變量中)。此外,爲了使這更復雜,發送到Web服務的XML請求需要發送用戶名和密碼以能夠返回項目。如何從SOAP響應創建JSON變量?
用於Web服務的URL是在這裏:http://ws.idssasp.com/members.asmx?wsdl
想我會創建一個Visual Studio的Web應用程序項目(C#),這是我能夠但是做,連接到Web服務就好了,這需要位於JavaScript用於輸出來自Web服務方法的項目的頁面上。因此,在這種情況下.aspx文件不起作用,因爲它只需要在標籤內的JSON變量中輸出Web服務響應的結果(可能位於頁面的頭部,但對我無關緊要哪裏)。或者它可以動態地創建一個.JS文件(這可能會更好,因爲它會被緩存,如果我的服務器上存在js文件,則不需要多次調用Web服務)。但是,我不確定要在Visual Studio中構建什麼來完成此任務?我不確定如何將它用於輸出到頁面上。我想JSON變量也可以存儲在服務器上的Members.json
文件中,並且可以調用它來加載所需的json。
如何從SOAP,XML,Response ...中向SOAP Server請求頭中的UserName和Password發送請求後返回JSON數組。這裏有一個頁面解釋了請求所需的XML以及響應的樣子:http://ws.idssasp.com/members.asmx?op=GetMemberList&pn=0
在這個頁面上,他們告訴你如何通過PHP來完成它,但是PHP不可用,只有ASP.NET 4.0提供給我。這裏是做他們的PHP方式:
$clientWS = new SoapClient('http://ws.idssasp.com/Members.asmx?wsdl');
$namespaceWS = 'http://ws.idssasp.com/Members.asmx';
$dmsClientU = '';
$dmsClientP = '';
$headerBodyWS = array('UserName' => $dmsClientU, 'Password' => $dmsClientP);
$headerWS = new SOAPHeader($namespaceWS, 'AuthorizeHeader', $headerBodyWS, false);
$clientWS->__setSoapHeaders(array($headerWS));
$results = $clientWS->GetMemberList();
print_r($results);
我怎麼可以在這裏做同樣的事情在ASP.NET 4.0,而不是返回XML結果,返回被內使用JSON變量腳本標記在頁面上?
或者我正在反思這個,有更好的解決方案?
非常感謝你,這有很大幫助!認爲憑證將進入其他Web服務。但是在另一個Web服務中想到一個WebService會讓人感到困惑......需要考慮一下我需要在網站根目錄下的web.config文件中放一些東西...... –
另外,怎麼做你把SOAP轉換成JSON?我還沒有看到這方面的任何好例子,但也許他們確實存在... –
不要將新的Web服務看作另一個Web服務的* inside * - 它只是從您引用的外部服務中消耗XML並將其轉換爲JSON以供您的頁面JavaScript使用。由於您的項目正在引用WSDL,因此SOAP響應應該作爲普通的C#對象返回。在你的服務的web方法中,返回的C#對象只需要被序列化成JSON,這可以通過構建一個JSON字符串來手動完成,但最好使用像JSON.NET這樣的工具:http://james.newtonking.com/ JSON – polyslush