gpt4 book ai didi

iphone - 使用 3G 连接时 ASIHTTPRequest 参数出现问题(使用 Wifi 时正常)

转载 作者:行者123 更新时间:2023-11-29 04:58:49 25 4
gpt4 key购买 nike

我的 iPhone 应用程序的一位用户提示该应用程序在使用移动数据连接时无法工作(但通过 Wifi 工作正常)。我的应用程序向第三方 REST API 发出请求,并为此使用 ASIHTTPRequest 库。

我的 HTTP 请求的一个参数是用户名(这是一个电子邮件地址),因此我使用以下代码对用户名进行编码:

-(NSString *) encodeString:(NSString *) string
{
NSString * returnString = (NSString *)CFURLCreateStringByAddingPercentEscapes(
NULL,
(CFStringRef) string,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8 );
return [returnString autorelease];
}

然后将其内置到 URL 中,如下所示:

// Setup the url we need to make the request to the sharkscope API
NSString * urlString = [NSString stringWithFormat: @"%SERVICEADDRESSHERE?Username=%@&Password=%@",
encodedUserName, m_md5Key];
NSURL * url = [NSURL URLWithString:urlString];
request = [[ASIHTTPRequest requestWithURL:url] retain];

从我的应用程序中发送的是具有以下用户名的请求:

Username=Fred.Bloggs%40wanadoo.fr

对于该用户,使用其移动数据连接时服务器接收到的内容是:

Username=Fred.Bloogs%2540wanadoo.fr

很明显,% 字符在我调用 requestWithURL 和它到达服务器之间的某个地方被编码。我无法理解原因,因为我还有数百个其他用户可以通过他们的数据连接正常运行请求。

我是否需要对传递到 requestWithURL 的值进行编码?

有谁知道 % 字符在哪个阶段被重新编码。我猜它一定在 ASIHTTP 库中,但无法弄清楚在这种情况下什么情况会触发它。

最佳答案

损坏的发生可能是由于运营商在 3G 连接上设置的代理或透明代理造成的。

可能的解决方法:

  • 使用 POST 而不是 GET
  • 使用 https 代替 http
  • 在非标准端口上使用 http

为了证明这个理论,你可以尝试要求他在使用 3G 连接时在 iOS 上的 Safari 中输入相同/相似的请求。

关于iphone - 使用 3G 连接时 ASIHTTPRequest 参数出现问题(使用 Wifi 时正常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7412864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com