Ben*_*ack 23 javascript asp.net ajax json web-services
我已经使用发送到ASP.NET 2.0 ASMX Web服务的JSON请求(使用AJAX Extensions 1.0 for ASP.NET 2.0)完成了以下测试,看起来区分大小写在某些情况下很重要,但在其他情况下则不然.请参阅以下示例:
案例匹配100%:
{"request":{"Address":{"Address1":"123 Main Street","Address2":"suite 20","City":"New York","State":"NY","Zip":"10000","AddressClassification":null}}}
Run Code Online (Sandbox Code Playgroud)
结果: HTTP/1.1 200 OK
包含的对象名称的大小写Address
不匹配:
{"request":{"address":{"Address1":"123 Main Street","Address2":"suite 20","City":"New York","State":"NY","Zip":"10000","AddressClassification":null}}}
Run Code Online (Sandbox Code Playgroud)
结果: HTTP/1.1 200 OK
Web服务参数的大小写request
不匹配:
{"Request":{"address":{"Address1":"123 Main Street","Address2":"suite 20","City":"New York","State":"NY","Zip":"10000","AddressClassification":null}}}
Run Code Online (Sandbox Code Playgroud)
结果: HTTP/1.1 500 Internal Server Error
(快速注意:类Request
和参数request
共享相同名称的事实不是相关的.即使我将参数名称更改为lrequest
,仍然需要区分大小写.)
JSON Web Service请求中的区分大小写何时重要?此外,这是一般的Web服务问题还是特定于ASP.NET AJAX?
其他背景资料:
我正在使用适用于ASP.NET 2.0的AJAX Extensions 1.0,因此可能已在更高版本的框架中解决了这个问题.如果是这样,请告诉我.
在我最近关于格式化JSON字符串的问题的答案之后,我意识到我的请求失败的原因并不是因为无效的JSON(感谢TJ Crowder指出并链接到http:// www. jsonlint.com/用于JSON验证).相反,在做了一些更多的测试之后,我了解到问题是因为Web服务不是我的JSON对象的格式化方式,而且我发现Web服务在区分大小写方面非常挑剔.似乎有时案例敏感性很重要,而有时则不是(见上面的例子).
以下是我的Web方法和类的C#代码:
[WebMethod]
public Response ValidateAddress(Request request)
{
return new test_AddressValidation().GenerateResponse(
test_AddressValidation.ResponseType.Ambiguous);
}
...
public class Request
{
public Address Address;
}
public class Address
{
public string Address1;
public string Address2;
public string City;
public string State;
public string Zip;
public AddressClassification AddressClassification;
}
public class AddressClassification
{
public int Code;
public string Description;
}
Run Code Online (Sandbox Code Playgroud)
Ser*_*pth 53
根据JSON-RPC规范,答案总是如此.
6.5.过程和参数名称的区分大小写
符合实现必须将过程和参数名称视为区分大小写,例如名称栏和BAR将被视为两个不同的实体.
所以,听起来像它适用于你的情况是例外,而不是它们没有的情况.有些人可能只是不遵守规范.
归档时间: |
|
查看次数: |
48008 次 |
最近记录: |