2016-07-29 21 views
0

Bisher habe ich die API "Bing Search" von Azure Data Market verwendet, um in meinem Objective-C-Projekt Image-Suchen auszuführen.Wie Bing übergeben Such Ocp-Apim-Subscription-Key in einer NSURLSession?

Im Folgenden ist der Teil des Codes, der die Suche ausführt:

{ 
     NSData *authData; 
     NSString *authKey = @"<enter Subscription key here!>"; 
     authData = [[[NSString alloc] initWithFormat:@"%@:%@", authKey, authKey] dataUsingEncoding:NSUTF8StringEncoding]; 
     NSString *authValue = [[NSString alloc] initWithFormat:@"Basic %@", [self stringByEncodingInBase64:authData]]; 
     NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; 
     [config setHTTPAdditionalHeaders:@{@"Authorization": authValue}]; 

     // Timeout settings... 
     config.timeoutIntervalForRequest = 6.0; 
     config.timeoutIntervalForResource = 8.0; 

     NSMutableCharacterSet * URLQueryPartAllowedCharacterSet; 
     URLQueryPartAllowedCharacterSet = [[NSCharacterSet URLQueryAllowedCharacterSet] mutableCopy]; 
     [URLQueryPartAllowedCharacterSet removeCharactersInString:@"&+=?"]; 
     NSString * escapedValue = [searchKeys stringByAddingPercentEncodingWithAllowedCharacters:URLQueryPartAllowedCharacterSet]; 
     NSString * urlString = [[NSString alloc] initWithFormat: 
      @"https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/Image?Query='%@'&$top=20&$format=json", escapedValue]; 
     NSURL *JSONURL = [NSURL URLWithString:urlString]; 
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:JSONURL]; 
     NSURLSessionDataTask * dataTask = 
     [[NSURLSession sessionWithConfiguration:config] dataTaskWithRequest:request completionHandler:^ 
     (NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {                 
     < PROCESS YOUR DATA HERE >  
     }]; 
     [dataTask resume]; 
    } 

Jetzt habe ich eine Benachrichtigung von Microsoft erhalten, das Ende des Lebens der derzeit verfügbaren Azure Datenmarkt „Bing Search“ API ankündigt Angebote am 15. Dezember 2016. Benutzer, die derzeit die APIs über den Azure Data Market verwenden, können vor diesem Datum auf die Microsoft Cognitive Services-Such-API-Angebote migrieren.

Eine der wichtigsten Änderungen mit dieser neuen API besteht darin, dass jede von Ihnen erstellte Anforderung den HTTP-Header Ocp-Apim-Subscription-Key enthalten muss, den Sie für den Abonnementschlüssel der von Ihnen aufgerufenen API festlegen.

Ich habe den Schlüssel jetzt generiert. Wie kann ich meinen vorhandenen Code ändern, um diesen "Ocp-Apim-Subscription-Key" zu übergeben?

Angenommen, der neue Schlüssel lautet qwerty12345, wenn Sie die Lösung buchen möchten.

Antwort

1

Ocp-Apim-Subscription-Key sollte in der Kopfzeile übergeben werden. Daher werden NSURLSessionConfiguration und seine Methode setHTTPAdditionalHeaders verwendet: