webservice正在返回JSON对象列表。 JSON对象是这样的:
"id": "1",
"stanze": 2,
"dotazione": [{
"id": 31,
"nome": "Wi-Fi"
},
{
"id": 23,
"nome": "Garden"
},
{
"id": 3,
"nome": "TV"
}]
RootObject
是一个类,为JSON对象结构自动在线生成。
List<RootObject> allObj = new List<RootObject>();
最后,我想将JSON响应反序列化为RootObject
(s)的列表
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(allObj.ToString());
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("www.thewebservice.com/api");
我已设法为网络服务请求添加标头参数。
request.Method = "POST";
request.MediaType = "application/json";
request.ContentType = "application/vnd.api+json";
第1期:不要认为ContentLength设置正确
request.ContentLength = data.Length;/// ????
request.Accept = "application/vnd.api+json";
这些是标题
的参数request.Headers.Add("X-USER", "myuser");
request.Headers.Add("X-PASS", "myuser2018Net");
request.Headers.Add("X-WHAT", "ALLOGGILIST");
request.Headers.Add("X-ACTION", "GET");
第2期如何设置身体参数?
例如参数名称= lingua
,值= EN
答案 0 :(得分:0)
根据MSDN站点,确保data.Length的值不是-1。 https://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.contentlength(v=vs.110).aspx
您可以使用以下设置语言:
WebHeaderCollection myWebHeaderCollection = request.Headers;
//Include English in the Accept-Langauge header.
myWebHeaderCollection.Add("Accept-Language","en;q=0.8");
答案 1 :(得分:0)
如果您使用WCF作为Web服务,则可能需要使用WebInvoke声明该方法,如下所示:
[WebInvoke(
UriTemplate = "yourpath",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.WrappedRequest)]
专注于“BodyStyle”,因为该param将定义如何使用BODY传递参数。
这篇文章解释了它:
Can't Pass JSON Post Data to WCF REST Service using Fiddler
希望有所帮助