把头发拉过来,请帮忙。我想要的只是一个POST Web服务,它接受一个字符串参数(它将是json),然后将其解析为JObject,这样我就可以从中获取数据。 我不想将它与.NET对象匹配。这不是一种选择。
我有以下Web服务:
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
string ProcessJsonData(string jsonData);
public string ProcessJsonData(string jsonData)
{
JObject JObj = JObject.Parse(jsonData);
return "Success";
}
我希望AJAX调用和调用后的代码都能正常工作。但是我一直收到错误的请求错误(400)。
以下是我在Javascript中所做的事情:
(假设jsonObject是一个格式正确的json字符串(在其他测试中使用它,jsonlite.come或其他任何已验证过的)
var dataObj = JSON.stringify(jsonObject);
$.ajax({
type: "POST",
data: dataObj,
url: "http://blabalblafdsfs/ProcessJsonData",
success: function (data) {
alert(data);
},
error: function (data) {
alert(data);
}
})
$.ajax({
type: "POST",
url: "http://blabalblafdsfs/ProcessJsonData?jsonData=" + dataObj,
success: function (data) {
alert(data);
},
error: function (data) {
alert(data);
}
})
这两种方法都不起作用。 这是我的代码隐藏方法:
string testJson = @"{
""Questions"":[
{""Code"":""s1"",""Questions"":""Q1,Q2""},
{""Code"":""s2"",""Questions"":""Q1,Q2,Q3""},
{""Code"":""s3"",""Questions"":""Q1,Q2,Q4""},
{""Code"":""s4"",""Questions"":""Q1,Q2,Q5""}
]
}";
string response;
string responseBody;
try
{
WebClient client = new WebClient();
client.Headers.Add("Content-type", "application/json");
client.Encoding = Encoding.UTF8;
Uri uri = new Uri("http://blabalblafdsfs/ProcessJsonData", UriKind.Absolute);
response = client.UploadString(uri, "POST", testJson);
}
catch (WebException we)
{
response = we.ToString();
}
try
{
using (WebClient client = new WebClient())
{
NameValueCollection requestParameters = new NameValueCollection();
Uri uri = new Uri("http://blabalblafdsfs/ProcessJsonData", UriKind.Absolute);
response = client.UploadString(uri, "POST", testJson);
}
}
catch (WebException we)
{
response = we.ToString();
}
再次,没有成功。感谢所有帮助。