Ios objective-c json字符串到django phonenumber字段“;输入的电话号码无效。”;
我的iOS应用程序需要向我的网站注册新用户。其中一个必填字段是电话号码,因此我在模型中的服务器上使用django phonenumber字段Ios objective-c json字符串到django phonenumber字段“;输入的电话号码无效。”;,ios,objective-c,json,django,Ios,Objective C,Json,Django,我的iOS应用程序需要向我的网站注册新用户。其中一个必填字段是电话号码,因此我在模型中的服务器上使用django phonenumber字段PhoneNumberField。发送POST请求的iOS代码如下所示: NSString *url = @"http://mywebsite.com/api/register"; NSString *post = @"name=test&email=test@test.com&phone_number=+15554443333&p
PhoneNumberField
。发送POST请求的iOS代码如下所示:
NSString *url = @"http://mywebsite.com/api/register";
NSString *post = @"name=test&email=test@test.com&phone_number=+15554443333&password=test";
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[post length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:postData];
NSURLConnection *con = [NSURLConnection connectionWithRequest:request delegate:self];
if(con) {
NSLog(@"Connection Successful");
} else {
NSLog(@"Connection could not be made");
}
注意:“post”和“url”通常通过方法调用传入,但为了简单起见,我只是在这里硬编码了它
PhoneNumberField
需要一个国际电话号码格式的号码,据我所知,这就是我正在使用的号码。无论我为phone\u number
输入什么,我总是返回{“phone\u number”:[“输入的电话号码无效。”]}
作为响应。如果我从我的型号中取出电话号码并使用相同的代码(没有电话号码=+15554443333
),新用户将在服务器上注册,一切正常
我在互联网上到处搜寻我的问题,但在任何地方都找不到解决办法。有人知道我做错了什么吗?谢谢
我的模型中的“name”是一个
CharField
,“email”是一个EmailField
,我解决了这个问题。我需要对字符串进行URL编码,即输入加号
NSString *post =@"name=test&email=test@test.com&phone_number=+15554443333&password=test";
必须是%2B。最后的字符串看起来像
NSString *post =@"name=test&email=test@test.com&phone_number=%%2B15554443333&password=test";
问题似乎在于服务器如何读取电话号码。由于您的代码没有生成电话号码错误消息,我将尝试调试您在服务器端执行的任何操作。确保对象被正确绑定等等。我一开始也这么想,并进行了一系列调试。但是,在没有找到任何东西,并且当我在该端点使用django rest框架的web界面时,它可以工作的事实之后,我认为问题不在于服务器。不要做假设。准确记录应用程序提交的输入并尝试复制。如果所说的真实输入日志不能解释问题,那么在开发服务器上使用pdb之类的实时调试工具并检查输入是一种非常可靠的调试策略,您可以使用无限的工具。此外,请在问题中包含这些信息。如果它在某些情况下有效,但在其他情况下无效,那么这可能是非常有价值的诊断信息。相关细节和细节是你的朋友!