2016-03-29 34 views
0

正如标题内容类型POST请求,无参数的构造函数定义时JSON与ASMX Web服务

当我使用Fiddler测试页面 -

http://localhost:59583/JSONtest.asmx/Test 内容类型:应用程序/ JSON的;字符集= UTF-8

和我的请求体是

{"header":{"sig":"abcdefg","timestamp":"2016-03-25T04:25:09.8395853Z"}} 

它将响应返回给此错误消息: u0027

类型的\ u0027System.String \定义无参数的构造但是,如果我把JSON格式用反斜杠表示:

{"header":"{\"sig\":\"abcdefg\",\"timestamp\":\"2016-03-25T04:25:09.8395853Z\"}"} 

响应将显示结果我wa nt这是正确的。

如何插入没有反斜杠的JSON格式?

这是我的asmx代码。

[WebMethod] 
    [ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)] 
    public string Test(string header) 
    { 
     return header; 
    } 

回答

0

那是因为"header"在你的第一个片段是带有属性的类,而不是一个单一的string在你的代码。错误信息在我看来只是令人困惑。

第二个代码段确实只有一个string作为"header"的值,所以没关系。如果你真的想"header"成为一个对象,你必须为它创建一个单独的类,以便正确地将其序列化。

+0

你能举个例子吗?不太明白 – user3901625

+0

你的第一个'header'不是一个字符串,所以你不能序列化它。另一个是因为它正确地逃脱了。 –

+0

假设我需要插入2个参数,其中包含许多数组值: 'string header'和'string body' 然后我必须插入标头'{“sig”:“eeewrewre”,“timestamp”的值: “2014-01-01T10:11:12Z”}} and for body '{“payerbanknum”:“34434”,“payerbankname”:“testbank”'} 如何在fiddler中键入请求正文? – user3901625

0

发送Ajax的post请求之前,你可以用这两个标题对象,它的内部JSON.stringify()值

var myHeader = {"header":JSON.stringify(headerValue)}; 
var myParams = JSON.stringify(myHeader); 

,那么你可以发送myParams变量作为数据参数为Ajax请求

$.ajax('url',data:myParams ..... 
相关问题