我想要使用Ideone.com的SOAP API編譯一些代碼片段。爲此,我必須在SOAP請求中發送源代碼。這裏是針對SOAP請求的規範:在SOAP請求中發送C++代碼
<message name="createSubmissionIn">
<part name="user" type="xsd:string"/>
<part name="pass" type="xsd:string"/>
<part name="sourceCode" type="xsd:string"/>
<part name="language" type="xsd:int"/>
<part name="input" type="xsd:string"/>
<part name="run" type="xsd:boolean"/>
<part name="private" type="xsd:boolean"/>
</message>
如上所述,sourceCode
應該是一個字符串,而代碼爲「文本」。 舉個例子下面的代碼:
#include <iostream>
using namespace std;
int main()
{
cout<<"Hello Ideone!";
return 0;
}
如果我encodeURIComponent
它在JavaScript客戶端發送請求之前(如所提到的其他地方),將得到的文本是:
%23include%20%0A%0Ausing%20namespace%20std%3B%0A%0Aint%20main()%0A%7B%0A%09cout%3C%3C%22Hello%20Ideone!%22%3B%0A%09return%200%3B%0A%7D
這是被推遲爲無效代碼(編譯錯誤)。我確認了服務器收到的代碼,並且代碼未在服務器端解碼。 如果我將它作爲單行發送,那麼編譯錯誤仍然存在,因爲您無法在#include
行中找到代碼的其餘部分。 我也嘗試過CDATA的東西,但是Dint做了任何事情。
所以,請指導我解決這個問題。如何在SOAP請求中成功發送代碼段。
P.S.以防萬一我的客戶端可能設計不好,我正在使用在線SOAP客戶端: http://soapclient.com/soapclient?template=%2Fclientform.html&fn=soapform&SoapTemplate=%2FSoapResult.html&SoapWSDL=http%3A%2F%2Fideone.com%2Fapi%2F1%2Fservice.wsdl&_ArraySize=5
不,API沒有損壞。現在,我必須使用PHP代理來連接他們的API。它工作得很好。 (PHP使用'\ n'作爲將文本編碼爲字符串的新換行符。)但是,當我直接使用xhr進行嘗試時,它只是不想工作。 – 2012-03-11 09:52:30