我已經有了wcf web服務(basicHttpBinding)。我們的Delphi7客戶端無法正確使用它。 我已經將WSDL與WCF演員拼合在一起。好。 Delphi7 wsdl導入器生成代理正確。WCF Delphi7方法輸入參數
現在我已經有了輸入參數的問題。它們總是有默認值(字符串爲空,int爲0)。
方法delphi7的輸出值正常。例如: :
public string Test(string a)
{
return "Test"+a;
}
此方法總是返回「測試」。我的日誌記錄系統修復了我在方法中有空的問題,所以問題是正確的傳輸輸入參數。
我不能undersand什麼是錯
編輯
代理:
ISyncer = interface(IInvokable)
['{D46862B0-BDD3-8B80-35A8-A2AC69F24713}']
function Test(const a: String): String; stdcall;
end;
電話:
Sync:=(dmMain.HTTPRIO1 as ISyncer);
test:=Sync.Test('5555');
dmMain.HTTPRIO1具有選擇soLiteralParams:
初始化:
InvRegistry.RegisterInvokeOptions(TypeInfo(ISyncer), ioLiteral);
電話後,我得到的異常與消息:
Error deserializtion message body for operation Test.
Operation formatter detects ivalid message body. Expecting node type "Element"
with name "Test" and namespace "http://tempuri.org". Actually node type "Element"
with name "xsd:String" and namespace "http://w3.org/2001/XMLSchema"
WSDL片段:
<xsd:element name="Test">
−
<xsd:complexType>
−
<xsd:sequence>
<xsd:element minOccurs="0" name="a" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
−
<xsd:element name="TestResponse">
−
<xsd:complexType>
−
<xsd:sequence>
<xsd:element minOccurs="0" name="TestResult" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
EDIT2
我研究的http請求:
件.NET
<Test> xmlns="http://tempuri.org/"><a>5555</a></Test>
作品正確的;
Delph7
<Test xmlns="http://tempuri.org/"><xsd:a>5555</xsd:a></Test>
空輸入參數。 問題在於前綴xsd
不知道是什麼原因。你有什麼例外嗎?這項服務是否可以正常使用。網絡客戶端(測試目的)? – Aravind 2011-05-30 08:26:36
沒有例外,服務與.net客戶端正常工作。輸入參數正確傳遞 – 2011-05-30 09:09:10
請發佈wsdl和生成的代理類 – Sam 2011-05-30 23:17:00