0

我正在使用 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 的配置存在问题,但我找不到它......感谢任何人的帮助!埃德

4

2 回答 2

0

请尝试删除最后两行代码并编写

删除这个

NSOperationQueue *myQueue = [[NSOperationQueue alloc] init];

[myQueue addOperation:myOperation];

添加这个

[myoperation start];

并且在结束方括号(])之前写失败:nil,比如

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.

}failure:nil];

让我知道它是否工作......!!!!快乐编码!!!!!!

于 2012-11-02T07:26:26.717 回答
0

我已经解决了这个问题。我将发布决议的内容,希望能帮助遇到类似问题的其他人。原来问题出在运行 IIS 7 的系统上安装了 AVG。这是一个难以确定的问题,因为任何其他系统都可以毫无问题地访问 Web 服务器。它仅适用于 iPhone 模拟器访问运行 IIS7 的系统。即使在同一台 Mac 上运行的 Safari 或 FireFox 也能正常工作。现在 AVG 内部是什么导致了问题……这还有待确定。我真的希望这对一路上的人有所帮助!

于 2012-11-05T19:10:02.327 回答