2016-07-29 39 views
0

到目前爲止,我使用Azure數據市場「必應搜索」API在我的Objective C項目中執行圖像搜索。如何在NSURLSession中傳遞Bing搜索Ocp-Apim-Subscription-Key?

以下是執行搜索的代碼部分:

{ 
     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]; 
    } 

現在,我已經收到了微軟的通知,宣佈現有的Azure的數據集市的生命的盡頭「Bing搜索」 API 2016年12月15日發佈。 當前正在通過Azure數據市場使用API​​的用戶可以選擇在該日期之前遷移到Microsoft Cognitive Services Search API產品。

這個新API的主要變化之一是,您創建的每個請求都必須包含Ocp-Apim-Subscription-Key HTTP標頭,該標頭設置爲您要調用的API的訂閱密鑰。

我現在已經生成了密鑰。 如何修改我現有的代碼以通過此「Ocp-Apim-Subscription-Key」?

假設您要發佈解決方案,則新密鑰爲qwerty12345。

回答

1

Ocp-Apim-Subscription-Key應該在Header中傳遞。因此,將使用NSURLSessionConfiguration及其方法setHTTPAdditionalHeaders:

NSString *authKey = @"<enter NEW key>"; 
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; 
[config setHTTPAdditionalHeaders:@{@"Ocp-Apim-Subscription-Key": authKey}];