Как добавить HTTP-заголовок в NSURLMutableRequest с неанглийскими буквами (ø, æ и т. Д.). и заставить его работать - PullRequest
1 голос
/ 27 октября 2019

Я пытаюсь получить некоторые данные из конечной точки бэкэнда, где требуется специальный заголовок авторизации. он работает нормально, когда имя пользователя содержит только английские символы. Если имя пользователя содержит неанглийские символы, сервер возвращает 401 несанкционированных.

Я установил заголовок следующим образом:

[urlRequest setValue: @ "Авторизация" дляHTTPHeaderField: @ "MyProject-ApiKey Сорен : drt38f0s9a21" ];// если имя mike вместо søren, оно работает нормально. noël не будет работать.

Я пытался вручную жестко закодировать кодовую точку символа Юникода ø (\ U00F8) в значении заголовка, но это не сработало. Что я должен сделать со значением перед установкой его в качестве заголовка, чтобы оно работало? Я был в состоянии использовать эту конечную точку в Android с не английскими буквами. Таким образом, проблема не на стороне сервера.

Примечание: я получаю приведенный ниже журнал непосредственно перед сбоем запроса

CredStore - performQuery - Error copying matching creds.  Error=-25300, query={
    class = inet;
    "m_Limit" = "m_LimitAll";
    ptcl = htps;
    "r_Attributes" = 1;
    sdmn = "django-tastypie";
    srvr = "domain.com";
    sync = syna;
}

Ниже показано, как я его запрашиваю

 NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://domain/endpoint/?queryParam=3"];

[urlRequest setHTTPMethod:@"GET"];
[urlRequest setValue:[self getHeaderValue] forHTTPHeaderField:@"Authorization"];

NSURLSession *session = [NSURLSession sharedSession];

NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
    if(httpResponse.statusCode == 200)
    {
      //comes here with english letters
    }
    else if(httpResponse.statusCode == 401)
    {
        //comes here with non english letters
    }
}];
[dataTask resume];

Обновление: я попробовал это на почтальоне, и он также не работает. Работает только с английскими буквами.

...