NSMutableURLRequest无法连接到本地网络

时间:2012-11-01 21:59:32

标签: objective-c ios iis iis-7 iis-7.5

我正在使用AFNetworking从iOS v6.0应用程序连接到我的本地Cold Fusion 8服务器,而不是在同一台计算机上但在同一网络上连接超时。当我使用外部公共服务器时,它工作正常。

我已尝试通过IP地址进行连接,但无法正常工作 我在hosts文件中尝试了一个为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模拟器的User-Agent中。我试图找到一种方法来更改iPhone模拟器的用户代理或允许IIS 7中的用户代理,但似乎无法搞清楚。 iPhone模拟器6呈现的用户代理是(iPhone模拟器; ios 6.0; Scale / 2.00)。

有谁知道如何在IIS 7上允许此用户代理或更改iPhone模拟器中的用户代理?

还有其他人看过这个问题吗? 提前致谢, 编

更新----

大家好 好的,我想出了如何使用NSMutableURLRequest更改User-Agent和Content-Type。我更改了这些以匹配浏览器发送的内容,FireFox浏览器,并再次尝试无济于事。我仍然认为IIS 7.5的配置存在问题,但我找不到它...... 感谢任何人的帮助! 编

2 个答案:

答案 0 :(得分:0)

请尝试删除最后2行代码并写入

删除此

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];

告诉我工作与否...... !!!! 快乐编码!!!!!!

答案 1 :(得分:0)

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