我正在为商店流程编写一些扩展,我需要调用一些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));
}
提前谢谢你:)
答案 0 :(得分:1)
HTTP/GET
请求不能包含请求正文。由于它们意味着用于获取内容,因此您无法将内容发送到获取内容。我不会在你的情况下使用查询字符串。
如果您需要发送数据,则需要以下动词:
HTTP/POST
,如果您需要在服务器端创建新对象。HTTP/PUT
,如果您需要更新服务器端的现有对象。另一方面,如果要将JavaScript对象格式化为JSON,则需要使用内置的JSON
对象及其JSON.stringify(...)
函数,或提供正确的内容类型(即application/json
}到jQuery.ajax
功能。
答案 1 :(得分:0)
好吧,看起来冒烟,然后返回向同事展示这就是所需要的:在演示代码时,它有效:不再从服务返回502而是一个很好的200而不是。