2016-02-15 29 views
2

我正在使用Post方法。我有3個jsons和3個字符串。我想將它們用於後期方法。 我已經嘗試了很多解決方案,但沒有解決。 order_item_details,ORDER_DETAILS,DEVICE_INFO有JSON對象JSON POST Web服務中的多個Json對象和3個字符串

NSURL *url=[NSURL URLWithString:@"my url"]; 
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
[request setHTTPMethod:@"POST"]; 
NSMutableData *jsonData = [NSMutableData data]; 

// add params (all params are strings) 
[jsonData appendData:[[NSString stringWithFormat:@"{order_item_details=%@", orderItemDetails] dataUsingEncoding:NSUTF8StringEncoding]]; 
[jsonData appendData:[[NSString stringWithFormat:@",order_details=%@", orderDetails] dataUsingEncoding:NSUTF8StringEncoding]]; 
[jsonData appendData:[[NSString stringWithFormat:@",transaction_id=%@", transID] dataUsingEncoding:NSUTF8StringEncoding]]; 
[jsonData appendData:[[NSString stringWithFormat:@",order_unique_id=%@", unique] dataUsingEncoding:NSUTF8StringEncoding]]; 
[jsonData appendData:[[NSString stringWithFormat:@",user_id=%@", userid] dataUsingEncoding:NSUTF8StringEncoding]]; 
[jsonData appendData:[[NSString stringWithFormat:@",device_info=%@}", deviceInfo] dataUsingEncoding:NSUTF8StringEncoding]]; 
[request setURL:url]; 
[request setValue:[NSString stringWithFormat:@"%d", jsonData.length] forHTTPHeaderField:@"Content-Length"]; 
//   //HTTP Authentication 
NSString *authStr = [NSString stringWithFormat:@"%@:%@", @"admin", @"1234"]; 
NSData *authData = [authStr dataUsingEncoding:NSASCIIStringEncoding]; 

NSString *authValue = [authData base64Encoding]; 

[request setValue:[NSString stringWithFormat:@"Basic %@",authValue] forHTTPHeaderField:@"Authorization"]; 

[request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:jsonData]; 

NSError *error = [[NSError alloc] init]; 
NSHTTPURLResponse *response = nil; 
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

if ([response statusCode] >= 200 && [response statusCode] < 300) 
{ 
    NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding]; 

    SBJsonParser *jsonParser = [SBJsonParser new]; 
    NSDictionary *jsonData = (NSDictionary *) [jsonParser objectWithString:responseData error:nil]; 

    NSLog(@"%@",jsonData); 
} 

對此我得到空值。我有JSON像下面

{order_item_details=  [{"item_amount":"500.00","item_price":"100.00","item_size":"M","page_name":"Billi","quantity":"5","fk_image_id":880},{"item_amount":"250.00","item_price":"50.00","item_size":"S","page_name":"Billi","quantity":"5","fk_image_id":880}], 

order_details=[{"email":"[email protected]","mobile_order_date":"2016-02-11 11:44:16","orderUniqueId":"3204a5eb8be171a51057678233268718302","order_price":"750.00","order_total_amount":"800.00","order_type":"COD","paypal_transaction_id":"","service_charges":"40.00","service_percentage":"5.00","shipping_address":"asad","shipping_cost":"50.0","shipping_name":"asad","shipping_phone":"123456","fk_user_id":141,"no_of_items":2,"order_id":1}], 

transaction_id=, 
order_unique_id=3204a5eb8be171a51057678233268718302, 
user_id=141, 
device_info={"device":"klimtwifi","device_model":"SM-T700","device_brand":"samsung","device_id":"LRX22G","device_serial":"3204a5eb8be171a5","device_manufacturer":"samsung","device_product":"klimtwifixx"}} 
+0

顯示您想要發送json數據的格式。 –

+0

所以這是所需的格式。對? –

+0

不,這是json,我想用它來發布方法 –

回答

1

我已經解決了這個問題,問題在於服務器將數據視爲一個對象。我改變了以下代碼

NSMutableData *jsonData = [NSMutableData data]; 
[jsonData appendData:[[NSString stringWithFormat:@"order_item_details=%@&", orderItemDetails] dataUsingEncoding:NSUTF8StringEncoding]]; 
[jsonData appendData:[[NSString stringWithFormat:@"order_details=%@&", orderDetails] dataUsingEncoding:NSUTF8StringEncoding]]; 
[jsonData appendData:[[NSString stringWithFormat:@"transaction_id=%@&", transID] dataUsingEncoding:NSUTF8StringEncoding]]; 
[jsonData appendData:[[NSString stringWithFormat:@"order_unique_id=%@&", unique] dataUsingEncoding:NSUTF8StringEncoding]]; 
[jsonData appendData:[[NSString stringWithFormat:@"user_id=%@&", userid] dataUsingEncoding:NSUTF8StringEncoding]]; 
[jsonData appendData:[[NSString stringWithFormat:@"device_info=%@", deviceInfo] dataUsingEncoding:NSUTF8StringEncoding]]; 
[request setURL:url]; 
0

創建字典如下: -

NSDictionary *parameterDictionary = @{@"order_item_details":orderItemDetails, @"order_details":orderDetails, @"transaction_id":transID, @"order_unique_id":unique, @"user_id":userid, @"device_info":deviceInfo}; //Modify the dictionary as per your need 

NSData *requestData = [NSJSONSerialization dataWithJSONObject:parameterDictionary options:NSJSONWritingPrettyPrinted error:nil]; 
[request setHTTPBody: requestData]; 

希望這有助於你出去!

+0

我不想讓json發佈。我想要5個參數發佈。訂單商品和訂單詳情有JSON,這是完美的。每個參數都有它自己的值,它應該是json或簡單的字符串。 –