私は私はASP.Netで開発したWebサービスに文字列としてXMLを送信する必要があります。 ASP.NetのWebサービス自動エンコード・デコード
は私がwebserivceのパラメータ(文字列)として送信する必要があり、その後、私は、Webサービスのビジネスロジックに戻ってそれをデコードし、XMLをエンコードすることができません。Webサービス例:
[WebMethod]
public void WebService_DoWork (string xml)
{
try
{
MyBo bo = new MyBo (HttpUtility.HtmlDecode (xml)) ;
bo.DoWork() ;
}
catch (Exception err)
{
//Logging Here
}
}
C#クライアント例:
public void CallMethod()
{
string encodedXMLPayload = @"<?xml version=".." ;
WebService client = new WebService() ;
client.Url = @"http:\\myTestServer:port\WebService.asmx" ;
client.WebService_DoWork (encodedXMLPayload) ;
}
ここで完全encodedXMLPayload件のデータ:
<?xml version="1.0" encoding="utf-8"?>
<RawTransactionsByAllocCode>
<ReportData>
<Costcenter>849001</Costcenter>
<TransactionID>261246195</TransactionID>
<TimeStamp>28/01/2016 10:15:39 PM</TimeStamp>
<TransType>Take</TransType>
<ProductName>Test Product</ProductName>
<SuppliersPartNo>52796843</SuppliersPartNo>
<Quantity>5</Quantity>
<MaterialNumber>17096239</MaterialNumber>
<DeliveryNoteNumber></DeliveryNoteNumber>
<PurchaseOrderReference />
</ReportData>
</RawTransactionsByAllocCode>
私は私のC#クライアントそれから(WebMethod属性WebService_DoWork)私のWebサービスを呼び出すようにしようとすると、私は私が送っていることを正確にペイロード(まだエンコードされた)を受信し、すべてが正しいです。
私はポストマン、SOAPUIまたは他のクライアントにしようとすると、私はWebメソッドでそれを受信したときだけデコードされ(とduble復号化が問題となり得る)ペイロードを取得します。ここで
は私がSOAPUIやポストマンと一緒に使用するSOAPリクエストの例である:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:WebService_DoWork>
<tem:xml>
<?xml version="1.0" encoding="utf-8"?>
<RawTransactionsByAllocCode>
<ReportData>
<Costcenter>849001</Costcenter>
<TransactionID>261246195</TransactionID>
<TimeStamp>28/01/2016 10:15:39 PM</TimeStamp>
<TransType>Take</TransType>
<ProductName>Test Product</ProductName>
<SuppliersPartNo>52796843</SuppliersPartNo>
<Quantity>5</Quantity>
<MaterialNumber>17096239</MaterialNumber>
<DeliveryNoteNumber></DeliveryNoteNumber>
<PurchaseOrderReference />
</ReportData>
</RawTransactionsByAllocCode>
</tem:xml>
</tem:WebService_DoWork>
</soapenv:Body>
</soapenv:Envelope>
だから私は(下、なぜその奇妙な行動の知っていただきたいと思いますC#クライアントは再びそれをコードすることも可能フード)ASP.Netは自動的にそれをデコードするため?
私の知る限りSOAPペイロードので、私の明示的なデコードが冗長である、asp.netのWebサービスと(WSDLから生成された)Visual Studioのクライアントが自動的にペイロードをエンコード・デコードするようだ私が見るもの、エンコードする必要があります – Skary