这是我的代码,用于将发布请求发送到nodejs后端。

CLLocation* location = [locationManager location];
CLLocationCoordinate2D coord = [location coordinate];
NSMutableURLRequest *request =
[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://50.63.172.74:8080/points"]];
//[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPMethod:@"POST"];
NSDictionary* jsonDict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat:coord.latitude], @"lat", [NSNumber numberWithFloat:coord.longitude], @"lng", nil];//dictionaryWithObjectsAndKeys:coord.latitude, nil]
NSString *postString;
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict
                                                   options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
                                                     error:&error];

if (! jsonData) {
    NSLog(@"Got an error: %@", error);
} else {
   postString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];
(void)[[NSURLConnection alloc] initWithRequest:request delegate:self];

使用express我将request.body重新存储在服务器上,但它看起来像这样:
{ '{\n  "lat" : 0.0,\n  "lng" : 0.0\n}': '' }

而且我不能只说request.body.lat来访问它,因为它以未定义的形式返回。
我希望身体看起来像:
{ "lat":0.0, "lng":0.0}

关于如何使用Express的任何想法?

最佳答案

希望这对您有帮助。 请用您的实际坐标替换0.0

NSArray *keys = [NSArray arrayWithObjects:@"lat", @"lng", nil];
        NSArray *objects = [NSArray arrayWithObjects:@"0.0",@"0.0", nil];

        NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
        NSData *jsonData ;
        NSString *jsonString;
        if([NSJSONSerialization isValidJSONObject:jsonDictionary])
        {
            jsonData = [NSJSONSerialization dataWithJSONObject:jsonDictionary options:0 error:nil];
            jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];
        }


        NSString *requestString = [NSString stringWithFormat:
                                   @"http://50.63.172.74:8080/points"];

        NSURL *url = [NSURL URLWithString:requestString];
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
        [request setHTTPMethod:@"POST"];
        [request setHTTPBody: jsonData];
        [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        [request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"];

        NSError *errorReturned = nil;
        NSURLResponse *theResponse =[[NSURLResponse alloc]init];
        NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&theResponse error:&errorReturned];

        if (errorReturned) {
            NSLog(@"Error %@",errorReturned.description);
        }
        else
        {
            NSError *jsonParsingError = nil;
            NSMutableArray *arrDoctorInfo  = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers|NSJSONReadingAllowFragments error:&jsonParsingError];

            NSLog(@"Dict %@",arrDoctorInfo);
        }

关于ios - 从iPhone Application Expressjs/Nodejs后端发送JSON发布数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15722582/

10-12 12:34
查看更多