2

私のリクエストは

    request_ = [[ASIFormDataRequest requestWithURL:requestUrl] retain];
    [request_ setDelegate:self];
    [request_ setRequestMethod:@"GET"];
    [request_ setTimeOutSeconds:HTTP_TIME_OUT];
    [request_ startAsynchronous];

しかし、サーバーからの応答は

HTTP ステータス 405 - リクエスト メソッド 'GET' はサポートされていません。指定された HTTP メソッドは、要求されたリソースに対して許可されていません (要求メソッド 'GET' はサポートされていません)。

get リクエストですが、URL には「GET」パラメータが含まれていないことに注意してください。問題は、単にブラウザでリクエスト URL を取得するか、「HttpRequester」(http リクエストをテストするための Firefox アドオン) を使用して呼び出すと、サーバーから適切な応答が得られることです。 )。何がうまくいかなかったのでしょうか?

前もって感謝します。

バル

4

4 に答える 4

2

GETリクエストには、 を使用しますASIHTTPRequest

ASIFormDataRequestPOSTリクエスト用です。

しかし、単純なGET要求だけが必要な場合、わざわざ ASI を使用する必要はありません。dispatch_asyncブロックでこれを行うことができます:

dispatch_async(<some_queue>, ^{ 

    NSError  * error = nil;
    NSString * response = [NSString stringWithContentsOfURL: stringWithContentsOfURL: requestUrl error: &error];

    [self performSelectorOnMainThread: @selector(processResult:) withObject: response waitUntilDone: NO];
});
于 2012-06-01T11:29:01.897 に答える
1

解決しました。これは、行われたリクエストにヘッダー パラメーター「Accept」がないためです。追加すると、すべてが魅力的に機能しました。また、ASIFormDataRequest を ASIHTTPRequest に置き換えました (これはばかげた間違いでした)。

于 2012-06-01T11:29:14.143 に答える
1

サーバー側の問題のようです。サーバーが要求するすべてのヘッダー パラメータが要求に含まれているかどうかを確認してください。

于 2012-06-13T12:34:20.333 に答える
0

なぜASIFormDataRequestPOSTRequest という別名を作成し、 RequestMethodGET に設定するのですか? ASIHTTPRequest代わりにGET リクエストを使用する場合は、 .

于 2012-06-01T11:29:18.330 に答える