1

我为此苦苦挣扎了几个小时,我想将 json 字符串发送到 asp.net 服务器,但我总是得到空响应。我的代码有什么问题吗?还是服务器端有问题?多谢..

(网址仅出于安全考虑而隐藏),这是更新代码..

NSError *error;


NSDictionary* jsonDict = @{@"FundCode": @(1), @"TotalAmount":@(1000000), @"PaymentType":@(0), @"Bank":@"AAA BANK",@"BankAccountNo": @"123456789",@"Amount":@"1000000",
                           @"DepositFile":@"asset.PNG"};

NSData* postData = [NSJSONSerialization dataWithJSONObject:jsonDict options:kNilOptions error:&error];


NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

NSURL *url1 = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.url.com"]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url1];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
4

3 回答 3

2

您可以尝试使用 Cocoa 的内置 JSON 序列化来获取您的 JSON 数据,而不是自己提供转义字符串。这排除了不正确的转义等。

NSError* error = nil;
NSDictionary* jsonDict = @{@"FundCode": @(1), @"TotalAmount":@(1000000), @"PaymentType":@(0), @"Bank":@"AAA BANK"};
NSData* postData = [NSJSONSerialization dataWithJSONObject:jsonDict options:kNilOptions error:&error];

请注意,我没有指定所有键 - 您需要在发送请求之前完成字典。

于 2013-05-24T05:01:44.270 回答
1

朋友,您为 JSON 传递了错误的方法(因为您将其作为 NSString 发送)使用此方法

NSError* errorJson = nil;
NSDictionary* jsonDict = @{@"FundCode": @(1), @"TotalAmount":@(1000000), @"PaymentType":@(0), @"Bank":@"AAA BANK",@"BankAccountNo": @"123456789",@"Amount":@@"1000000",
@"DepositFile":@"asset.PNG"};
NSData* postData = [NSJSONSerialization dataWithJSONObject:jsonDict options:kNilOptions error:&errorJson];

希望这可以帮助..

于 2013-05-24T05:08:07.230 回答
0

您还可以使用 NSKeyArchiever 将 NSDictionary json 编码为 postData,如下所示

NSMutableDictionary *postDix=[[NSMutableDictionary alloc] init];
[postDix setValue:@"1" forKey:@"FundCode"];
[postDix setValue:@"1000000" forKey:@"TotalAmount"];
[postDix setValue:@"0" forKey:@"PaymentType"];    //etc

NSMutableData *postData = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:postData];
[archiver encodeObject:postDix forKey:@"json"];
[archiver finishEncoding];
于 2013-05-24T05:08:14.093 回答