2012-11-01 161 views
0

我正在使用AFNetworking從iOS v6.0應用程序連接到本地Cold Fusion 8服務器,而不是在同一臺計算機上,但在同一個網絡上並且連接超時。當我使用外部公共服務器時,它工作正常。NSMutableURLRequest無法連接到本地網絡

我試過通過IP地址連接,它不起作用。
我已經嘗試在主機文件中爲IP地址分配域名,但這也不起作用。請參閱下面的錯誤。 但是,我可以通過網絡瀏覽器連接就好了。
此外,服務器端文件是完全一樣的。 Cold Fusion的版本相同。唯一的區別是,我可以找到的公共服務器是Win2003與IIS6和本地服務器是Windows7與IIS7。

任何想法爲什麼這不會在本地網絡上工作。使當地發展有種困難。

下面是相關代碼:

// 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."} 

更新---- 我相信我已經縮小的問題降到我相信是訪問IIS 7的iPhone模擬器的問題。它將使用相同的代碼訪問以前版本的IIS在同一網絡上沒有問題。 這個問題可能出現在iPhone模擬器的用戶代理中。我試圖找到一種方法來更改iPhone模擬器的用戶代理或允許IIS 7中的用戶代理,但似乎無法弄清楚。 iPhone模擬器6展示的用戶代理是(iPhone Simulator; ios 6.0; Scale/2.00)。

有誰知道如何讓IIS 7上的此用戶代理或更改iPhone模擬器中的用戶代理?

有其他人看過這個問題嗎? 由於提前, 埃德

更新----

大家好 好了,所以我想通了,如何改變用戶代理和使用NSMutableURLRequest的Content-Type。我改變了這些以匹配瀏覽器發送的內容,FireFox瀏覽器,然後再次嘗試無效。我仍然相信IIS 7.5的配置有問題,但我找不到它... 感謝任何人的幫助! 埃德

回答

0

我已解決此問題。我會發布該決議是希望幫助其他類似問題的其他人。 原來,問題是在運行IIS 7的系統上安裝了AVG。確定是一個困難的問題,因爲任何其他系統都可以在沒有任何問題的情況下訪問Web服務器。只有iPhone模擬器訪問運行IIS7的系統才具體。即使在同一臺Mac上運行的Safari或FireFox也能正常工作。現在AVG正在引發這個問題......這還沒有確定。 我真的希望這可以幫助一路上的人!

0

請嘗試刪除最後兩行代碼,寫

刪除此

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

[myQueue addOperation:myOperation]; 

添加此代替

[myoperation start]; 

,也寫失敗:無,結束坊前支架(])如

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

讓我知道它工作與否...... !!!! 快樂編碼!!!!!!

+0

嗨Nirav,感謝您的協助,但是,這些編輯無效。我將它縮小到了我所認爲的與訪問IIS 7的iPhone模擬器相關的問題。它將訪問同一網絡上的以前版本的IIS。我試圖找到一種方法來更改iPhone模擬器的用戶代理或允許IIS 7中的用戶代理,但似乎無法弄清楚。 iPhone模擬器6展示的用戶代理是(iPhone Simulator; ios 6.0; Scale/2.00)。有誰知道如何讓IIS 7上的這個用戶代理或在iPhone模擬器中更改用戶代理?謝謝 – Edd