所以我有一本字典,我试图从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中作为密钥。看起来很奇怪。
答案 0 :(得分:0)
尽管OP解决了他的问题并解释了什么是错误,但仍然作为答案发布。他说这是标题。我有完全相同的问题,解决方案特别是Content-Type
标题。由于我们将一个JSON对象传递给REST客户端,因此我们认为它设置了正确的Content-Type
,但事实并非如此。
Content-Type: application/json
HAPI 不假设请求有效负载是JSON。 JSON.stringify(request.payload, null, 2);
显示的格式与问题中的问题相同。您必须为Hapi.js指定Content-Type
才能将JSON有效负载正确解析为JSON。