JSON PUT запрос - PullRequest
       7

JSON PUT запрос

1 голос
/ 02 мая 2011

Привет, я использую JSONKit.Мне нужно обновить статус на сайте linkedin, отправив обновление статуса через запрос JSON на сервер.это код, который я посылаю.я получаю 400 эроор.пожалуйста, скажите мне, в чем ошибка.

Ответы [ 3 ]

0 голосов
/ 02 мая 2011

Я бы начал с записи вашей полезной нагрузки json и данных отклика соединения в простой текстовый файл и просмотра (или публикации, если вы хотите, чтобы мы посмотрели).Я обнаружил, что это самый простой способ обнаружить проблемы при публикации данных в сервисах.Вы используете библиотеку, так что я думаю, что полезная нагрузка должна быть в порядке, но вы никогда не знаете.Данные ответа могут содержать больше подсказок к истинной проблеме, хотя я не могу сказать, что когда-либо использовал API LinkedIn.

Кроме того, я не видел, где вы указали, что запрос был "PUT",Включили ли вы

 [req setHTTPMethod:@"PUT"];

Используйте этот код для записи полезной нагрузки в файловую систему (извините за форматирование, это не очень удобно для мобильного сафари):

NSString *documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *documentPath = [NSString stringWithFormat:@"%@/payloadData.txt", documentsDirectoryPath];  
[requestData writeToFile:documentPath atomically:YES];
0 голосов
/ 02 мая 2011

Не знаю, будет ли это соответствовать вашим потребностям, я использую iphone и подключаюсь к веб-сервисам jayrock .net.

Вот команда, которую я использую для обработки всех моих вызовов.

Также я использую json-framework

- (NSDictionary*) sendJSONRPCRequestTo:(NSString*) url 
                        forCommand:(NSString*)command 
                    withParamaters:(NSMutableArray*) parameters 
                       synchronous:(BOOL) sendSynchronous
{

    if (parameters != nil)
    {
        [parameters setValue:[HSAppData appVersion] forKey:@"AppVersion"];
        [parameters setValue:[NSNumber numberWithDouble:[HSAppData currentLocation].longitude] forKey:@"Longitude"];
        [parameters setValue:[NSNumber numberWithDouble:[HSAppData currentLocation].latitude] forKey:@"Latitude"];
    }

    if (self.commandId == nil)
    {
        self.commandId = @"1";
    }

    NSMutableURLRequest *request = [self.baseTransaction makeNewRequestFor:url];

    NSMutableDictionary *mainPackage = [NSMutableDictionary dictionary];
    [mainPackage setValue:self.commandId forKey:@"id"];
    [mainPackage setValue:command forKey:@"method"];
    [mainPackage setValue:parameters forKey:@"params"];

    NSString *jsonData = [mainPackage JSONRepresentation];

    [request setValue:command forHTTPHeaderField:@"X-JSON-RPC"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

    if (jsonData != nil && [jsonData isEqual:@""] == NO)
    {
        [request setHTTPMethod:@"POST"];
        [request setValue:[[NSNumber numberWithInt:[jsonData length]] stringValue] forHTTPHeaderField:@"Content-Length"];
    }

    [request setHTTPBody:[jsonData dataUsingEncoding:NSUTF8StringEncoding]];
    if (sendSynchronous)
    {
        NSHTTPURLResponse   * response = nil;
        NSError             * error = nil;

        //self.baseTransaction.lastConnection = nil;
        NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

        NSString *jsonResult = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];

        NSDictionary *jsonDict = nil;

        @try {
            jsonDict = [jsonResult JSONValue];
        }
        @catch (NSException * e) {
            NSLog(@"Error: %@",jsonResult);
            jsonDict = [NSMutableDictionary dictionary];
            [jsonDict setValue:self.commandId forKey:@"id"];
            [jsonDict setValue:@"Unable to call function on server" forKey:@"error"];
            [jsonDict setValue:[NSNull null] forKey:@"result"];
        }
        @finally {
            return jsonDict;
        }
    }
    // TODO: Add ASynchronous
//  else 
//  {
//  }

}
0 голосов
/ 02 мая 2011

Может быть , это может вам помочь.

...