【发布时间】:2011-08-05 22:53:26
【问题描述】:
我创建了一个简单的 wcf 服务,它公开了一个 GetData 方法。其实就是新建wcf项目时创建的模板。
我把应用加到iis服务器上,这样就可以从外面访问了,像这样:http://192.168.0.100/TFSWrapper/Service1.svc
我使用一个通用的soap 客户端向GetData 方法发送一个请求。这是生成的soap请求:
<?xml version="1.0" encoding="utf-16"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetData xmlns="http://tempuri.org/" />
</soap:Body>
</soap:Envelope>
这里是肥皂响应:
<?xml version="1.0" encoding="utf-16"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetDataResponse xmlns="http://tempuri.org/">
<GetDataResult>You entered: 87</GetDataResult>
</GetDataResponse>
</s:Body>
</s:Envelope>
顺便说一句,我从方法中删除了参数并硬编码了一个返回值。
如您所见,一切正常。
接下来,我创建了一个调用相同服务的 Titanium 客户端。我使用了上面确切的肥皂请求,只是为了确保。
基本上我是这样做的:
var s='<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetData xmlns="http://tempuri.org/" /></soap:Body></soap:Envelope>';
//xhr.send(config.envelopeBegin+body+config.envelopeEnd);
xhr.send(s);
发送此消息时,服务器将返回“500 内部服务器错误”响应以及以下故障字符串:
带有 Action 'http://tempuri.org/GetData' 的消息不能 由于 ContractFilter 不匹配,在接收方处理 端点调度程序。这可能是因为合同不匹配 (发送方和接收方之间的操作不匹配)或绑定/安全性 发送者和接收者之间的不匹配。检查发件人和 接收方具有相同的合同和相同的约束力(包括 安全要求,例如消息,传输,无)。
起初我使用钛皂 api 创建请求 xml,但我得到了同样的错误。我虽然这是如何创建它的问题,所以这就是为什么我硬编码一个请求(有效),但仍然没有运气。
【问题讨论】:
-
嗨蒂莫!您能否提供更多信息,以便我帮助回答您的问题?特别是:您使用的是什么版本的 Titanium Mobile SDK?您正在测试哪个版本的 iOS 模拟器或 Android 模拟器?几天后我还能访问那个测试服务器吗?我会帮助您获得一些工作代码,或者我会确保报告错误,以便我们可以修复任何阻碍您前进的潜在问题。稍后!
标签: javascript wcf iis soap titanium