我不能为我的生活弄清楚发生了什么以及我不能使用json发布到我的服务。我已经尝试在谷歌的阳光下阅读每一条关于我所遇到的问题的评论,但目前一切都让我走到了尽头。请帮忙!
我通过邮件中的回调URL将回发服务传递给第三方服务。然后,第三方使用回叫网址将Json回送到我的wcf服务。我对初始帖子没有问题,但他们和我自己都无法点击回拨服务。我试过Fiddler返回400错误,但我不知道为什么。我需要比网络链接更多一点,以解决这个问题。请帮忙!
Web.config文件
<system.serviceModel>
<services>
<service behaviorConfiguration="serviceBehavior" name="IBVWebService.InstantBankVerificationPostBack">
<endpoint address="http://localhost:64337/InstantBankVerificationPostBack.svc" behaviorConfiguration="web" binding="webHttpBinding" contract="IBVWebService.IInstantBankVerificationPostBack"></endpoint>
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
网络界面
[OperationContract]
[WebInvoke(
Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
RequestFormat = WebMessageFormat.Json)]
void PostBack(String json);
测试客户端
WebClient client = new WebClient();
client.Headers["Content-type"] = "application/json";
client.Encoding = System.Text.Encoding.UTF8;
string jsonInput = "{'data':'testvalue'}";
client.UploadString("http://localhost:64337/InstantBankVerificationPostBack.svc/PostBack", jsonInput);
当前跟踪日志。
答案 0 :(得分:5)
我已经使用您拥有的配置和简单的测试客户端,使用简单的wcf服务复制了您的场景:
WCF
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
void PostBack(String json);
客户:
string jsonInput = "{\"json\":\"testvalue\"}";
using (var client = new WebClient())
{
client.Headers["Content-type"] = "application/json";
client.Encoding = System.Text.Encoding.UTF8;
client.UploadString("http://localhost:51175/Service1.svc/PostBack", "POST", jsonInput);
}
在客户端中确保您匹配WCF方法的签名,即您期望的对象称为 json ,因此当您从客户端调用该方法时,发送 json: &#39;值&#39; 强>
另外,请考虑对webclient使用using语句,以确保在使用后使用它。
答案 1 :(得分:0)
您的方法参数名称为&#34; json&#34;,因此JSON输入参数应如下所示:
string jsonInput = "{'json':'testvalue'}";