2

所以我有一本字典,我试图从 iOS 设备发送到 Node Hapi 服务器。

由于某种原因,我的请求有效负载正在将字典添加为具有空白值的键。这是我的 iOS 代码

NSDictionary *userData = [User userToDictionary: newUserInfo];
NSData *userJSON = [NSJSONSerialization dataWithJSONObject: userData options: kNilOptions error: nil];

NSString *urlString = [NSString stringWithFormat: @"%@%@/addNewUser", kBaseURL, kUsers];

// This will set up the URL
NSURL *url = [NSURL URLWithString: urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: url];
[request setHTTPMethod: @"POST"];
[request addValue: @"application/json" forHTTPHeaderField: @"Content-Type"];

// This will set up the url session
NSURLSessionConfiguration* config = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration: config];

NSURLSessionUploadTask *uploadTask = [session uploadTaskWithRequest: request fromData: userJSON completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

    if(error)
    {

    } else
    {

    }
}];

[uploadTask resume];

这是我的有效载荷

{ '{"userLastNameKey":"Kwon7","userEmailKey":"email7","userFirstNameKey":"Michael7","userUsernameKey":"username7","userPasswordKey":"password7"}': '' }

谁能帮我这个?我不想将我的用户信息作为密钥保存在 mongo 中。只是看起来很奇怪。

4

1 回答 1

0

即使 OP 解决了他的问题并解释了问题所在,也发布了答案。他说是头球。我遇到了完全相同的问题,解决方案就是Content-Type标题。由于我们将 JSON 对象传递给 REST 客户端,我们认为它负责设置 right Content-Type,但事实并非如此。

Content-Type: application/json

HAPI不会假定请求有效负载是 JSON。AJSON.stringify(request.payload, null, 2);显示与问题中的问题相同的格式。您必须指定Content-TypeHapi.js 才能将 JSON 有效负载正确解析为 JSON。

于 2014-10-12T22:15:22.177 回答