为什么我的网络服务说我给它一个错误的请求?

时间:2017-06-07 19:25:13

标签: c# json web-services

把头发拉过来,请帮忙。我想要的只是一个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();
        }

再次,没有成功。感谢所有帮助。

0 个答案:

没有答案