1

json文字列をasp.netサーバーに送信したいのですが、常にnull応答が返されます。私のコードに何か問題がありますか?それともサーバー側に問題がありますか? どうもありがとう..

(URL はセキュリティ上の理由で非表示になっています)、これが更新コードです。

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 に答える