我正在使用 AFNetworking 从 iOS v6.0 应用程序连接到我的本地 Cold Fusion 8 服务器,而不是在同一台机器上,而是在同一网络上,并且连接超时。当我使用外部公共服务器时,它工作正常。
我已经尝试通过IP地址连接,但它不起作用。
我已经尝试在主机文件中为 IP 地址分配域名的条目,这也不起作用。请参阅下面的错误。但是,我可以通过网络浏览器进行连接。
此外,服务器端文件完全相同。Cold Fusion 的版本是相同的。我能找到的唯一区别是公共服务器是带有 IIS6 的 Win2003,而本地服务器是带有 IIS7 的 Windows7。
关于为什么这在本地网络上不起作用的任何想法。使本地开发有点困难。
以下是相关代码:
// load params
NSMutableDictionary *myParams = [[NSMutableDictionary alloc] init];
[myParams setValue:@"Hello" forKey:@"Parameter1"];
[myParams setValue:@"There" forKey:@"Parameter2"];
// Load the base URL into a URL object
// Changing this to an external public server works fine
NSURL *baseURL = [NSURL URLWithString:@"http://www.mylocalmachine.com/"];
// Create HTTP client and init with base url
AFHTTPClient *myHttpClient = [[AFHTTPClient alloc] initWithBaseURL:baseURL];
// POST request to path with the parameters
NSMutableURLRequest *myRequest = [myHttpClient requestWithMethod:@"POST" path:@"myfile.cfm" parameters:myParams];
// Block response from the HTTP client request and pass it back to the calling object
AFJSONRequestOperation *myOperation = [AFJSONRequestOperation JSONRequestOperationWithRequest:myRequest
success:^(NSURLRequest *mySuccessRequest, NSHTTPURLResponse *mySuccessResponse, id mySuccessJSON)
{
// PROCESS THE SUCCESS RESPONSE;
}
failure:^(NSURLRequest *myFailureRequest, NSHTTPURLResponse *myFailureResponse, NSError *myFaliureError, id myFailureJSON)
{
// PROCESS THE FAILURE RESPONSE... AFTER 60 seconds the system will fallout to this block.
}];
// Create a queue object
NSOperationQueue *myQueue = [[NSOperationQueue alloc] init];
// Add the operation object to the queue
[myQueue addOperation:myOperation];
以下是我得到打印 myFailureError 对象的错误
Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo=0x8481000 {NSErrorFailingURLStringKey=http://www.mylocalmachine.int/myfile.cfm, NSErrorFailingURLKey=http://www.mylocalmachine.int/myfile.cfm, NSLocalizedDescription=The request timed out., NSUnderlyingError=0x9189e20 "The request timed out."}
更新----我相信我已经将问题缩小到我认为 iPhone 模拟器访问 IIS 7 的问题。它将使用相同的代码访问同一网络上的以前版本的 IIS 没问题。问题可能出在 iPhone 模拟器的用户代理中。我试图找到一种方法来更改 iPhone 模拟器的用户代理或允许 IIS 7 中的用户代理,但似乎无法弄清楚。iPhone Simulator 6 呈现的 User-Agent 是 (iPhone Simulator; ios 6.0; Scale/2.00)。
有谁知道如何在 IIS 7 上允许此用户代理或更改 iPhone 模拟器中的用户代理?
有没有其他人看到这个问题?在此先感谢, 埃德
更新 - -
大家好 好的,所以我想出了如何使用 NSMutableURLRequest 更改用户代理和内容类型。我更改了这些以匹配浏览器将发送的内容,FireFox 浏览器,然后再次尝试无济于事。我仍然认为 IIS 7.5 的配置存在问题,但我找不到它......感谢任何人的帮助!埃德