2

私はMacアプリに取り組んでおり、githubAPIからGetHTTPリクエストを作成しようとしていますが、このリクエストは条件付きリクエストであり、次のようになります。

https://api.github.com/repos/soviettoly/sandbox/events -H "If-Modified-Since: Sat, 13 Oct 2012 23:35:10 GMT"

そのリクエストでcurl-iを実行すると、必要なものがすべて取得されます。しかし、私はXCodeでこれを試みており、githubから404が返されます。

これが私がリクエストを行う方法です:

NSMutableString * theURL = [[NSMutableString alloc]initWithString:@"https://api.github.com/repos/soviettoly/sandbox/events -H \"If-Modified-Since: Sat, 13 Oct 2012 23:35:10 GMT\""];

NSLog(@"the normal %@",theURL);
NSString * escaped = [theURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"the escpaed %@", escaped);
NSURL * test = [NSURL URLWithString: escaped];
NSLog(@"actual URL %@",test);
NSURLRequest * request = [NSURLRequest requestWithURL:test];
[[NSURLConnection alloc]initWithRequest:request delegate:self];

NSLogコマンドからの出力は私にこれを与えます:

the normal https://api.github.com/repos/soviettoly/sandbox/events -H "If-Modified-Since: Sat, 13 Oct 2012 23:35:10 GMT"
the escpaed https://api.github.com/repos/soviettoly/sandbox/events%20-H%20%22If-Modified-Since:%20Sat,%2013%20Oct%202012%2023:35:10%20GMT%22
actual URL https://api.github.com/repos/soviettoly/sandbox/events%20-H%20%22If-Modified-Since:%20Sat,%2013%20Oct%202012%2023:35:10%20GMT%22

XCodeでリクエストを行っても、curlコマンドで正しい結果が返されるのに、なぜ返されるのかわかりません。エスケープ文字を使用せずに試しましたが、XCodeには不正な文字が含まれているためURLが好きではありません。XCodeでこの種の呼び出しを行う方法がわかりません。私はGitHubに対して他のAPI呼び出しを問題なく行っていますが、これで問題が発生しています。誰かがヘップできればそれは素晴らしいことです。どうもありがとう!

4

1 に答える 1

2

おそらく、curl使用しているコマンドは

curl https://api.github.com/repos/soviettoly/sandbox/events -H "If-Modified-Since: Sat, 13 Oct 2012 23:35:10 GMT"

それはページ「https://api.github.com/repos/soviettoly/sandbox/events -H "If-Modified-Since: Sat, 13 Oct 2012 23:35:10 GMT"」を要求しているのではなく、要求していますページ ' https://api.github.com/repos/soviettoly/sandbox/events-H '、および「If-Modified-Since: Sat, 13 Oct 2012 23:35:10 GMT」を含む追加の HTTP ヘッダー ( ) を送信する"。

あなたの Objective-C コード、「https://api.github.com/repos/soviettoly/sandbox/events -H "If-Modified-Since: Sat, 13 Oct 2012 23:35:10 GMT"」というページをリクエストしています。へのリクエストにNSMutableURLRequestヘッダーを含めるには、を使用して設定する必要があります。If-Modified-Since: Sat, 13 Oct 2012 23:35:10 GMThttps://api.github.com/repos/soviettoly/sandbox/events

例えば

NSURL *url = [NSURL URLWithString:@"http://api.github.com/repos/soviettoly/sandbox/events"];
NSMutableURLRequest *request = [NSMutableURLRequest requestForURL:url];
[request setValue:@"Sat, 13 Oct 2012 23:35:10 GMT" forHTTPHeaderField:@"If-Modified-Since"];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
[connection start];
于 2012-10-14T02:39:11.813 に答える