我正在开发一个桌面应用程序,它通过WebClient POST请求调用一些Web服务。这些相同的Web服务也在Web应用程序中使用。
我遇到一个奇怪的问题,我的桌面应用程序请求成功,我得到了响应,但我的一些请求参数没有保存。但是同样的请求是使用jquery更新我从Web应用程序调用它们的所有参数。
在网络应用程序中,我正在调用这样的Web服务
Limit()
我stingify我的json对象是accountModel,我的请求在console.log
时看起来像这样st.replaceFirst(st.subSequence(0,1).toString(),st.subSequence(0,1).toString().toUpperCase().codePoints().forEach(e -> System.out.print((char)e));
现在,当我使用相同的请求字符串从我的桌面应用程序发布数据时,所有属性(如姓名,电子邮件和订阅)都已保存,但未保存兴趣和扇区。
我想弄清楚为什么同一个请求对象通过jquery而不是C#webclient工作。
以下是我用于使用WebClient发布数据的代码
$.post("/MyService/Account/Register",accountModel, function (data) {
});
请有人帮我解决这个问题,我没有收到任何错误,但我的一些参数不是更新。
我想澄清一下,我没有任何代码或文档访问网络服务。
更新
根据Jasen的评论,这里是用fiddler
捕获的请求JQuery请求
{"Name":"Lorem","Email":"abc@abc.com","interest":"[\"1\"]","sectors":"[\"1\",\"2\"]","subscribe":false}
WebClient请求
WebClient client = new WebClient();
string json = string.Format("{{\"Name\":\"{0}\",\"Email\":\"{1}\",\"interest\":\"[\"{2}\"]","sectors":"[\"{3}\",\"{4}\"]","subscribe":{5} }}","Lorem","abc@abc.com","1","1","2","false");
client.Headers[HttpRequestHeader.ContentType] = "application/json";
string result = client.UploadString("http://Server.com/MyService/Account/Register", json);
我可以将我的webclient请求发送为URL编码字符串,就像我们在jquery请求中看到的一样吗?
答案 0 :(得分:0)
最后,我在小提琴手的帮助下得到了解决方案。感谢Jasen建议小提琴手查看请求
这是我的工作代码
WebClient client = new WebClient();
string result = client.UploadValues("http://Server.com/MyService/Account/Register", new NameValueCollection()
{
{"Name","Lorem"},
{"Email","abc@abc.com"},
{"interest","[\"1\"]"},
{"sectors","[\"1\",\"2\"]"},
{"interest","false"}
});
是的我使用了UploadValues方法而不是UploadData或UploadString。另请注意,我已从代码中删除了内容类型json声明。