AFNetworking を使用して iOS v6.0 アプリからローカルの Cold Fusion 8 サーバーに接続していますが、同じマシン上ではなく同じネットワーク上にあり、接続がタイムアウトします。外部の公開サーバーを使用すると、正常に動作します。
IP アドレス経由で接続を試みましたが、うまくいきません。
IP アドレスにドメイン名を割り当てるホスト ファイルのエントリを試しましたが、これも機能しません。以下のエラーを参照してください。ただし、Webブラウザ経由で問題なく接続できます。
また、サーバー側のファイルもまったく同じです。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."}
更新---- 問題は、IIS 7 にアクセスする iPhone シミュレーターの問題であると思われるものに絞り込まれたと思います。同じコードを使用して、同じネットワーク上の以前のバージョンの IIS に問題なくアクセスします。問題は、iPhone シミュレーターのユーザー エージェントにある可能性があります。iPhone Simulator の User-Agent を変更する方法、または IIS 7 で User-Agent を許可する方法を見つけようとしましたが、理解できないようです。iPhone Simulator 6 が提示する User-Agent は (iPhone Simulator; ios 6.0; Scale/2.00) です。
IIS 7 でこのユーザー エージェントを許可する方法、または iPhone シミュレーターでユーザー エージェントを変更する方法を知っている人はいますか?
他の誰かがこの問題を見たことがありますか? 前もって感謝します、エド
アップデート - -
こんにちは、NSMutableURLRequest を使用して User-Agent と Content-Type を変更する方法を見つけました。これらをブラウザが送信するものと一致するように変更し、FireFox ブラウザを再試行しましたが、役に立ちませんでした。IIS 7.5 の構成に問題があると思いますが、見つかりません... 助けてくれてありがとう!!! エド