0

Я пытаюсь работать над сервисами Livelink restful и получать данные в приложении iOS. Ссылка документации АФИ:Ошибка с Json http request iOS

https://developer.opentext.com/webaccess/#url=%2Fawd%2Fresources%2Fapis%2Fcontent-server-v1.1%23!%2Fauth

код я использую для получения данных отклика является:

NSDictionary *authDict = [[NSDictionary alloc] initWithObjectsAndKeys: 
           @"XYZ",@"username", 
           @"ABC",@"password", 
           nil]; 
NSError *error; 
NSData *requestData = [NSJSONSerialization dataWithJSONObject:authDict options:0 error:&error]; 
NSURL *url = [NSURL URLWithString:@"http://livelink.xyz.com/livelink/livelink.exe/api/v1/auth"]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];            
[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
[request setValue:@"application/json charset=UTF-8" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"]; 
[request setHTTPBody: requestData]; 

NSURLResponse *requestResponse; 
NSData *requestHandler = [NSURLConnection sendSynchronousRequest:request returningResponse:&requestResponse error:nil]; 

NSString *requestReply = [[NSString alloc] initWithBytes:[requestHandler bytes] length:[requestHandler length] encoding:NSASCIIStringEncoding]; 

Но в поиске ответа я не получаю аутентификацию result.When Я вхожу запрос ответ, бревно:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> 
<title>500 - Internal server error.</title> 
<style type="text/css"> 
<!-- 
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;} 
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;} 
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF; 
background-color:#555555;} 
#content{margin:0 0 0 2%;position:relative;} 
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;} 
--> 
</style> 
</head> 
<body> 
<div id="header"><h1>Server Error</h1></div> 
<div id="content"> 
<div class="content-container"><fieldset> 
    <h2>500 - Internal server error.</h2> 
    <h3>There is a problem with the resource you are looking for, and it cannot be displayed.</h3> 
</fieldset></div> 
</div> 
</body> 
</html> 

Не могли бы вы помочь мне получить билет на аутентификацию. Заранее спасибо.

ответ

0

Я не уверен в отношении материала iOS, но может быть, это может вам помочь. Я пользуюсь ajax, чтобы получить билет, и он работает:

<html> 
    <head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
    <script> 
     var url = "your url/api/v1"; 
     var credentials = { username: "USERNAME", password: "PASSWORD" }; 

     $.post(url + "/auth", credentials, function (response) { 
     var ticket = response.ticket; 
     alert(response) 
     }); 
    </script> 
    </head> 
    <body>Hi</body> 
</html> 

Надеюсь, он может вам помочь.

+0

Да, я пытаюсь выполнить одни и те же шаги в коде iOS, но там он не работает. –

0

вам нужно изменить:

[request setValue:@"application/json charset=UTF-8" forHTTPHeaderField:@"Content-Type"]; 

Добавляя точку с запятой между 2 значения:

[request setValue:@"application/json; charset=UTF-8" forHTTPHeaderField:@"Content-Type"]; 

Моя рекомендация работать с асинхронным:

NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 

    NSString *string = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSASCIIStringEncoding]; 

    NSLog(@"requestReply = \n[%@]", string); 
}]; 
if (error) 
{ 
    NSLog(@"error = %@", error); 
} 

Но это выглядит как у вас есть ошибка связана с сервером, к которому вы пытаетесь получить доступ, убедитесь, что http://livelink.xyz.com/livelink/livelink.exe/api/v1/auth доступен и существует. Посмотрите конфигурацию своего сервера.

следующая ошибка:

500 - Internal server error. 
There is a problem with the resource you are looking for, and it cannot be displayed. 

Эта ошибка связана с серверной стороны, ничего общего с вашим клиентом.

Если вы ищете описание ошибки, это выглядит, как вы используете веб-сервер Microsoft, пожалуйста, обратите внимание: https://support.microsoft.com/en-us/kb/942031

Другое, чем ваш код выглядит хорошо для меня.

+0

Но то же самое работает, как описано в iOSMobiler ниже. Он не работает с кодом iOS. –