Sanjeev236 Ответов: 2

как использовать аутентифицированный сеанс для других служб.


Я хочу использовать vocalocity API. для использования служб мне нужно аутентифицировать сеанс,а затем использовать активный сеанс.Я вошел в систему, но не уверен, как захватить необходимый идентификатор сеанса.

Код для входа в систему:
String url = "https://my.vocalocity.com/appserver/rest/user/null"; 
WebRequest myReq = WebRequest.Create(url); 
String username = "xxx"; 
String password = "yyy"; 
myReq.Headers.Add("login", username); 
myReq.Headers.Add("password", password); 
WebResponse wr = myReq.GetResponse(); 
Stream receiveStream = wr.GetResponseStream(); 
StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8); 
string content = reader.ReadToEnd(); 

Выходные данные JSON
content: {
  "accountId" : xxxxx,
  "userStatusID" : 1,
  "loginName" : "xxx",
  "firstName" : "xxx",
  "lastName" : "xxx",
  "email" : "xx@xx.com",
  "phoneNumber" : "123456789",
  "role" : 0,
  "roleId" : [ 3 ],
  "secretQuestionId" : 3,
  "secretAnswer" : "shyam",
  "dateLastUpdated" : "2014-10-06T18:19:35.656Z",
  "lastUpdatedByUserId" : xxxxxx,
  "existingsuperuser" : 0,
  "contactnumbers" : [ {
    "userId" : 191716,
    "contactCode" : "D",
    "contactName" : "Default Extension",
    "contactNumber" : "329"
  } ],
  "updateMeWithAnnouncements" : 0,
  "blockAccess" : 0,
  "allowEndUserOutboundCallerId" : false,
  "userId" : xxxxxx

После аутентификации пользователя устанавливается сеанс, и информация о сеансе возвращается в файлах cookie HDAP-ID и/или JSESSIONID. Вызывающий абонент должен возвращать файлы cookie при последующих запросах на повторное использование существующего сеанса.

Нужна помощь в идентификации файлов cookie HDAP-ID и/или JSESSIONID и захвате их для дальнейшего использования и десериализации содержимого json.

JPartyka

Да, у меня точно такая же проблема. Вы решили этот вопрос?

Sanjeev236

нет... Vonage не поддерживает этот API.

2 Ответов

Рейтинг:
17

trydent

Я не уверен, нашли ли вы уже свой ответ или нет, но я присоединюсь к тому, что сделал.

Я бы сохранил myReq (WebRequest) живым при запросе других вызовов api (URL-адреса vonage). В основном используйте тот же объект, что и другие URL-адреса, которые требуют входа в систему в первую очередь.
Это позволяет сохранить файл cookie в том же сеансе.

Я использую WebClient вместо WebRequest, и файл cookie (в частности, значение HDAP-ID) хранится в webClientObj.ResponseHeaders.Cookie посредством setcookie
Это должно позволить вам вызывать другие вызовы API, не получая запрещенную страницу.

Я надеюсь, что это кому-то поможет.


Рейтинг:
12

Andy Missico

Бесплатна
http://businesssupport.vonage.com/ci/fattach/get/2776/0/filename/API+руководство+VBS+01282015.pdf[^]

public static void ClickToCall(string user, string password, string number)
{
    const string sAuthenticationUri = "https://my.vonagebusiness.com/appserver/rest/user/null";
    const string sClickToCallUriFormat = "https://my.vonagebusiness.com/presence/rest/clicktocall/{0}";

    string sClickToCallUri = string.Format(sClickToCallUriFormat, number);

    using (WebClient oClient = new WebClient())
    {
        oClient.Headers.Add("login", user);
        oClient.Headers.Add("password", password);

        string sAuthenticationResult = oClient.DownloadString(sAuthenticationUri);
        string sClickToCallResult = oClient.DownloadString(sClickToCallUri);
    }
}