0

実際、サーバーからデータを取得したいのですが、基本認証に ASIHTTPRequest を使用した場合、エラーは発生しませんでした。ダイジェスト認証に ASIHTTPRequest を使用したとき、問題に直面しました。

私のコードは次のとおりです。

     ASIHTTPRequest *requestASI = [[[ASIHTTPRequest alloc] initWithURL:url] autorelease];//url is in https
     [requestASI setValidatesSecureCertificate:NO];
    //[requestASI setDelegate:self];
    [requestASI setUsername:self.user_name];
    [requestASI setPassword:self.pass_word];
     [requestASI setAuthenticationScheme:(NSString *)kCFHTTPAuthenticationSchemeDigest];
     [requestASI addRequestHeader:@"User-Agent" value:@"ASIHTTPRequest"];
     [requestASI setRequestMethod:@"GET"];
   // [requestASI startAsynchronous];
    [requestASI startSynchronous];

私は次のように持っています....

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Request header field is missing ':' separator.<br />
<pre>
hone OS 5.0; en_US)</pre>
</p>
<hr>
<address>Apache/2.2.16 (Fedora) Server at www.example.com Port 443</address>
</body></html>

Aucactally 私は次のように取得する必要があります....

<?xml version="1.0" encoding="UTF-8" ?>
<resource-lists xmlns="urn:ietf:params:xml:ns:resource-lists">
    <list name="friends">
        <entry uri="venkat">
            <display-name>My name is Prasad</display-name>
        </entry>
    </list>
</resource-lists>

RESTful Web サービスのデバッガーである RESTClient を使用して取得しました。しかし、私は自分のコードを使用できませんでした。問題がどこにあるのか、誰か助けてください。前もって感謝します。

4

1 に答える 1

0

以下を使用して、ASIHTTPRequestを使用してダイジェスト認証を成功させました。非同期にするように変更できます。

NSString* urlString = @"http://yourURL"; 
NSURL* url = [NSURL URLWithString:urlString]; 
ASIHTTPRequest* request = [ASIHTTPRequest requestWithURL:url]; 

[request setDelegate:self]; 
request.shouldPresentCredentialsBeforeChallenge = YES; 
[request setUsername:@"yourusername"]; 
[request setPassword:@"yourpassword"]; 

request.timeOutSeconds = 30; 
request.validatesSecureCertificate = NO; 

[request setRequestMethod:@"GET"]; 
[request setDidFinishSelector:@selector(sendRequestResponse:)]; 
[request setDidFailSelector:@selector(sendRequestResponse:)]; 

[request startSynchronous]; 
NSError *error = [request error];
if (!error) {
    NSString *response = [request responseString];
}
于 2012-11-30T01:23:52.443 に答える