使用wcf Restful Service将json对象检索为查询字符串

时间:2013-07-09 13:07:08

标签: c# javascript json wcf

我正在创建一个WCF Restful服务,我希望通过POST操作保存来自javascript的json对象作为查询字符串。我将json对象作为查询字符串但是无法在wcf restful中访问它,请帮忙。 .........

  

我的javascript代码

var myRequest = new XMLHttpRequest();


myRequest.onreadystatechange=function(dataString) {

    if (myRequest.readyState == 4 && myRequest.status == 200) {


        console.log('Sent to server: ' + dataString + '');
        window.localStorage.removeItem(dataString);
    }
    else if (myRequest.readyState == 4 && myRequest.status != 200) {

        console.log('Server request could not be completed');
        saveDataLocally(dataString);
    }
}
    var url="http://localhost:58168/RestServiceImpl.svc/json";
myRequest.open("POST",url+"?"+dataString,true);
    myRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    myRequest.send(dataString);

   alert('Saved to server: ' + dataString + '');
  

我在javascript中的请求

     

![将json对象作为查询字符串发送到wcf restful server] [1]

>**RequestURL**:http://localhost:58168/RestServiceImpl.svc/json?"firstName":"shuresh","lastName":"kumar"}
  

请求标题:   内容类型:应用/ X WWW的窗体-urlencoded   产地:铬扩展:// ddijiilbgbjgciahjmonfahapadmkcfp   User-Agent:Mozilla / 5.0(Windows NT 6.1)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 27.0.1453.116 Safari / 537.36

     

查询字符串参数   { “名字”: “shuresh”, “姓氏”: “库马尔”}:

     

表单数据   { “名字”: “shuresh”, “姓氏”: “库马尔”}:

WCF Restful服务合同

 [OperationContract]
    [WebInvoke(Method = "POST",
        ResponseFormat = WebMessageFormat.Json,
         RequestFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "json?dataString={dataString}")]
    string JSONData(string dataString);
  

RestServiceImpl.svc.cs

  public string JSONData(string dataString)
    {

        return "You requested product " + dataString;


    }

我无法访问服务契约中的json对象(dataString)。请帮助我如何访问wcf restful上面代码中的查询字符串中附加的json对象。

http://localhost:58168/RestServiceImpl.svc/json?"firstName":"shuresh","lastName":"kumar"}

2 个答案:

答案 0 :(得分:0)

你不要把所有东西都推到“一根字符串”下。

试试这个(只是为了展示概念)

public string JSONData(string firstNameArg)
    {
//your code here
}

然后

http://localhost:58168/RestServiceImpl.svc/json?"firstNameArg":"shuresh"}

看看会发生什么。

答案 1 :(得分:0)

在POST / PUT上,表单数据不在QueryString中,而是可以在请求的InputStream中找到它。 此外,您的QueryString格式不正确...?param = value& param = value ... 希望它能帮到你