Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios objective-c json字符串到django phonenumber字段“;输入的电话号码无效。”;_Ios_Objective C_Json_Django - Fatal编程技术网

Ios objective-c json字符串到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

我的iOS应用程序需要向我的网站注册新用户。其中一个必填字段是电话号码,因此我在模型中的服务器上使用django phonenumber字段
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之类的实时调试工具并检查输入是一种非常可靠的调试策略,您可以使用无限的工具。此外,请在问题中包含这些信息。如果它在某些情况下有效,但在其他情况下无效,那么这可能是非常有价值的诊断信息。相关细节和细节是你的朋友!