c#格式化查询字符串的对象

时间:2015-02-27 09:44:39

标签: c# jquery asp.net rest

我正在为商店流程编写一些扩展,我需要调用一些REST服务。由于我需要调用它的许多地方,我需要从c#中做到这一点(这是因为建议使用jquery或其他涉及代码进入前端的想法)。

简短版本:我需要格式化一个对象数组并将其传递给GET请求。

长版本:这里有一些jQuery来举例说明

 <script>
    $(document).ready(function() {
    var url = "https://somerandomserver.com/do/stuff";

    var data = {
    ip : "1.2.3.4",
    goods : [
        {
            CategoryId: 10,
            CategoryPath: "hvitevarer/kjøl og frys/innbygning",
            Name: "gammelmandstelefon",
            Height: 10,
            Weight: 1,
            Width: 50,
            Depth: 18
        },
        {
            CategoryId: 11,
            CategoryPath: "hvitevarer/kjøl og frys/innbygning",
            Name: "nymandstelefon",
            Height: 10,
            Weight: 1,
            Width: 50,
            Depth: 18
        }
    ]
};

var headers = { 'api-key' : 'api-key' };
$.ajax({
url : url,
headers : headers,
type : 'get',
data : data,
}).done(function( result ){
console.log( result.data );
});});
</script>

我想要的是格式化我的业务对象,以便我可以将其传递给HttpWebRequest,而无需手动构建查询字符串的每一部分。

与此类似的东西(只有它能够正常运作):

    public static string GetTheString(string ip, AvailabilityGoods[] goods){
var json = new JavaScriptSerializer().Serialize(goods);
return string.Format("/do/stuff?ip={0}&goods={1}", ip, HttpUtility.UrlEncode(json));
}

提前谢谢你:)

2 个答案:

答案 0 :(得分:1)

HTTP/GET请求不能包含请求正文。由于它们意味着用于获取内容,因此您无法将内容发送到获取内容。我不会在你的情况下使用查询字符串

如果您需要发送数据,则需要以下动词:

  • HTTP/POST,如果您需要在服务器端创建新对象。
  • HTTP/PUT,如果您需要更新服务器端的现有对象。

另一方面,如果要将JavaScript对象格式化为JSON,则需要使用内置的JSON对象及其JSON.stringify(...)函数,或提供正确的内容类型(即application/json}到jQuery.ajax功能。

答案 1 :(得分:0)

好吧,看起来冒烟,然后返回向同事展示这就是所需要的:在演示代码时,它有效:不再从服务返回502而是一个很好的200而不是。