簡體   English   中英

通過ios中的http請求發送api密鑰值(生產密鑰)

[英]sending the api key value (production key) through http request in ios

引用了這些等同於curl請求的Objective-C帖子, 在Objective-C中執行基於curl的動作,我為示例嘗試了下面的代碼,我的示例數據如下

curl --get  'https://www.example.com/xyz' \
     --user 'API_KEY:API_SECRET' \
     --data 'app_id=APP_ID' \
     --data 'metrics=users' \
     --data 'dimensions=day,new_device' \
     --data-urlencode 'conditions={"day":["between","2013-04-01","2013-04-07"]}'

如果我有api密鑰(生產密鑰),如何檢索數據? 以及如何使用上述參數檢索用戶數據? 我試圖這樣做,以傳遞參數以通過url檢索數據。

-(void)doit
{
    NSString *userName =@"abc@v.com";
    NSString *password =@"cvbnm";

    NSError *myError = nil;


    NSMutableString *loginString = (NSMutableString*)[@"" stringByAppendingFormat:@"%@:%@", userName, password];
    NSLog(@"loginstring=%@",loginString);


    NSString *accept = [NSString stringWithFormat:@"application/example"];

    NSLog(@"accept %@",accept);
    NSString *authHeader = [@"Basic " stringByAppendingFormat:@"%@", loginString];
    NSLog(@"auth header =%@",authHeader);

    NSURL *url = [NSURL URLWithString:@"https://example.bnm/query"];

    NSMutableURLRequest *request=[[NSMutableURLRequest alloc]init];
    request = [NSMutableURLRequest requestWithURL:url];

    [request setURL:url];
    [request setHTTPMethod:@"GET"];
[request setValue:@"users" forKey:@"metrics"];
[request setValue:@"value of api key" forKey:@"API_KEY"];
[request setValue:@"day" forKey:@"dimension"];
[request setValue:@"{"day":["between","2013-04-01","2013-04-07"]}" forKey:@"conditions"];

 NSError *error;
    NSURLResponse *response;
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    NSLog(@"data : %@",data);

    NSString *result = [NSString stringWithCString:[data bytes] length:[data length]];
     NSLog(@"result = %@",result);
}

但是出了點問題,並沒有得到正確的回應。 請幫我解決這個問題,請讓我知道如何解決,任何幫助都會非常有用,請讓我知道是否需要更多信息

問題出在您說[request setValue:forKey:];的行上。

那些實際上沒有設置請求正文,您需要做的是這樣的:

NSString *stringData = @"app_id=APP_ID&metrics=users&foo=bar";
NSData *requestBodyData = [stringData dataUsingEncoding:NSUTF8StringEncoding];
request.HTTPBody = requestBodyData;

然后嘗試發布它,看看它是否適合您!

編輯:

我還注意到您沒有使用身份驗證,只是在登錄authHeader

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM