2016-04-07 18 views
0

Şimdi APIS kullanarak paypal yinelenen entegrasyonda çalışıyorum, şu API'da istek biçimi sorunuyla karşı karşıyayım. İstek biçimi, arkadaşınla aynı şekilde nasıl gönderilir?AFNetworking kullanarak dizi değeri nasıl iletilir?

curl -v -k -X PATCH 'https://api.sandbox.paypal.com/v1/payments/billing-plans/P-94458432VR012762KRWBZEUA' \ 
    -H "Content-Type: application/json" \ 
    -H "Authorization: Bearer <Access-Token>" \ 
    -d '[ 
     { 
      "path": "/", 
      "value": { 
       "state": "ACTIVE" 
      }, 
      "op": "replace" 
     } 
    ]' 

Şimdiye kadar ben kod aşağıdaki denedim

NSDictionary *valueDic = @{@"state":@"ACTIVE"}; 
    NSDictionary *parametersDic = @{@"path":@"/",@"value":valueDic,@"op":@"replace"}; 
    NSMutableArray *parameterArray = [[NSMutableArray alloc] init]; 
    [parameterArray addObject:parametersDic]; 

    NSString *finalyToken = [[NSString alloc]initWithFormat:@"Bearer %@",strAccessToken]; 
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    manager.requestSerializer = [AFJSONRequestSerializer serializer]; 
    manager.responseSerializer = [AFJSONResponseSerializer serializer]; 
    [manager.requestSerializer setValue:finalyToken forHTTPHeaderField:@"Authorization"]; 
    [manager.requestSerializer setValue:@"application/json+patch" forHTTPHeaderField:@"Content-Type"]; 
    [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"application/json"]; 

    NSString *urlPatch = [NSString stringWithFormat:@"https://api.sandbox.paypal.com/v1/payments/billing-plans/%@",creditCardId]; 
    [manager PATCH:urlPatch parameters:parameterArray success:^(AFHTTPRequestOperation *operation, id responseObject){ 
     NSLog(@"JSON: %@", responseObject); 
     [self recurringCreateBillingAgreement]; 
    }failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error: %@", error); 

i

(
{ 
    op = replace; 
    path = "/"; 
    value =  { 
     state = ACTIVE; 
    }; 
} 
) 

yukarıda Ama hata aşağıdaki

Error: Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: internal server error (500)" UserInfo=0x177155d0 {com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x1755c9b0> { URL: https://api.sandbox.paypal.com/v1/payments/billing-plans/P-1DT55351E261652436BZHSLA } { status code: 500, headers { 
    "CORRELATION-ID" = 6bf7cbf78bb16; 
    Connection = "close, close"; 
    "Content-Length" = 196; 
    "Content-Type" = "text/xml;charset=UTF-8"; 
    Date = "Thu, 07 Apr 2016 11:19:08 GMT"; 
    "PROXY_SERVER_INFO" = "host=slcsbplatformapiserv3001.slc.paypal.com;threadId=368"; 
    "Paypal-Debug-Id" = "6bf7cbf78bb16, 6bf7cbf78bb16"; 
    Server = Apache; 
    "Set-Cookie" = "X-PP-SILOVER=name%3DSANDBOX3.API.1%26silo_version%3D1880%26app%3Dplatformapiserv%26TIME%3D742524503; domain=.paypal.com; path=/; Secure; HttpOnly, X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT"; 
    Vary = Authorization; 
} }, NSErrorFailingURLKey=https://api.sandbox.paypal.com/v1/payments/billing-plans/P-1DT55351E261652436BZHSLA, NSLocalizedDescription=Request failed: internal server error (500), com.alamofire.serialization.response.error.data=<3c6e7331 3a584d4c 4661756c 7420786d 6c6e733a 6e73313d 22687474 703a2f2f 6378662e 61706163 68652e6f 72672f62 696e6469 6e67732f 78666f72 6d617422 3e3c6e73 313a6661 756c7473 7472696e 6720786d 6c6e733a 6e73313d 22687474 703a2f2f 6378662e 61706163 68652e6f 72672f62 696e6469 6e67732f 78666f72 6d617422 3e6a6176 612e6c61 6e672e4e 756c6c50 6f696e74 65724578 63657074 696f6e3c 2f6e7331 3a666175 6c747374 72696e67 3e3c2f6e 73313a58 4d4c4661 756c743e>, NSUnderlyingError=0x1757d4c0 "Request failed: unacceptable content-type: text/xml"} 
+0

Yukarıdaki hata çözümü, bu kod satırını kullanmıştır "NSString * jsonString = @" [{\ "yol \": \ "/ \", \ "değer \": {\ "state \": \ "ACTIVE \ "}, \" op \ ": \" replace \ "}]"; NSData * postBodyData = [NSData dataWithBytes: [jsonString UTF8String] uzunluğu: [jsonString uzunluğu]]; ' –

cevap

0

You alıyorum gibi istek biçimini yaratmıştır JSON dizesini o olarak göndermeniz gerekir ne parametresi. Dizininizin JSON dizesini aşağıdaki gibi oluşturabilirsiniz.

NSData *data = [NSJSONSerialization dataWithJSONObject:parameterArray options:0 error:nil]; 
NSString* jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

parameterArray diziniz

Şimdi parametrelerden birinin değeri olarak jsonString kullanmak olacak, bu yüzden sunucuya gönderebilirsiniz.

İlgili konular