abhishek goutam Ответов: 1

Как использовать url обратного вызова


Всем привет,
у меня проблема . Я работаю с workwave API проблема, которую я не понимаю, как я могу решить это
1> Как я могу создать url обратного вызова ?
2> Как я могу получить данные из workwave туда ?

пожалуйста, помогите мне. спасибо за ваш ценный ответ.

Что я уже пробовал:

для получения я попробую это


private string CreateToken(string message, string secret)
       {
           secret = secret ?? "";
           var encoding = new System.Text.ASCIIEncoding();
           byte[] keyByte = encoding.GetBytes(secret);
           byte[] messageBytes = encoding.GetBytes(message);
           using (var hmacsha256 = new HMACSHA256(keyByte))
           {
               byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
               return Convert.ToBase64String(hashmessage);
           }
       }

string dataUrl = "{\"url \": \"http://185.74.157.252:8096/json.aspx \",\"signaturePassword\" : \""+ signPassword + "\",\"test\":\"true\"}";

string Str = CallBackUrl("https://wwrm.workwave.com/api/v1/callback", dataUrl, userid, ApiKey);


string signPassword = CreateToken("http://185.74.157.252:8096/json.aspx" + " w/", ApiKey);

string CallBackUrl(string url, string urlregister, string bigApiUserID, string BigApiKey)
       {
           string responseStr = "";
           HttpStatusCode statusCode;
           WebRequest request = WebRequest.Create(url);
           request.Credentials = new NetworkCredential(bigApiUserID, BigApiKey);
           request.Method = "POST";
           byte[] bytes;
           bytes = System.Text.Encoding.ASCII.GetBytes(urlregister);
           request.Headers.Add("X-WorkWave-Key", BigApiKey);
           request.ContentType = "application/json";
           request.ContentLength = bytes.Length;
           Stream requestStream = request.GetRequestStream();
           requestStream.Write(bytes, 0, bytes.Length);
           requestStream.Close();
           HttpWebResponse response;
           try
           {
               response = (HttpWebResponse)request.GetResponse();
               statusCode = response.StatusCode;
               if (Convert.ToString(response.StatusCode) == "OK")
               {
                   Stream responseStream = response.GetResponseStream();
                   responseStr = new StreamReader(responseStream).ReadToEnd();
                   return responseStr;
               }
           }
           catch (WebException  ex)
           {
               using (var stream = ex.Response.GetResponseStream())
               using (var reader = new StreamReader(stream))
               {
                   string str = Convert.ToString(reader.ReadToEnd());
               }

           }


           return responseStr;
       }

Graeme_Grant

URL-адреса обратного вызова обычно требуются для OAuth 1.0 a или OAuth 2.0 или для Webhooks. Что ты пытаешься сделать?

abhishek goutam

мое требование состоит в том, чтобы создать url-адрес, который мне нужно передать в качестве url-адреса обратного вызова . где я буду получать данные из WorkWave api в формате json

Graeme_Grant

если сервер API, с которым вы разговариваете, не имеет альтернатив, то вам нужно использовать свою собственную конечную точку/url-адрес либо на сервере, который может принимать http-пакеты (например, веб-сервер), либо на вашем собственном приложении, которое прослушивает http-пакеты.

Я предлагаю обсудить это с ними.

abhishek goutam

для этого я могу использовать веб-сервис и разместить его на нашем примере сервера mysite.com/getdata из того, что я могу получить данные, это будет работать ?

Graeme_Grant

Конечная точка / url-это просто url-адрес на вашем сервере без страницы-WEBAPI. Если они отправляют вам данные, то конечная точка должна поддерживать глагол POST. Я уверен, что они объясняют это в своей документации.

1 Ответов

Рейтинг:
2

j snooze

Глядя на документацию workwave API, это выглядит не так уж плохо.
1. Запустите и запустите свой общедоступный веб-сервер (настоятельно рекомендуется использовать https)
2. Создайте свой веб-сервис, похоже, им нужен RESTful api call back url. Я лично использую проекты c# WebAPI для подобных вещей. Он должен принимать POST-действия данных JSON.
Я бы создал классы, которые имитируют их макет json, чтобы вы могли принять от них тот тип объекта, который он десериализует довольно хорошо.
3. После того как вы полностью настроили свой сервис Restful API, вам необходимо обновить системы workwave. Приведенный выше код может быть несколько полезен, но вам нужно использовать действие POST, а не действие GET, чтобы обновить их систему с помощью вашего нового URL-адреса веб-службы. Именно так они свяжутся с вами, позвонив по указанному вами URL-адресу.

Это очень высокий уровень зрения, но на самом деле он не так уж плох.


abhishek goutam

Привет, Джей снуз, спасибо за ваш ответ. Это мой первый раз, когда я интегрирую какой-либо api. Так что я немного запутался в этом. Сделайте вы образец для этого, чтобы я мог использовать его, и он поможет мне в будущем в качестве эталона. Я действительно благодарен тебе

abhishek goutam

я обновил свою функцию пожалуйста взгляните

j snooze

ваш обновленный код выглядит на правильном пути для размещения вашего url-адреса в их системе.
теперь на вашей стороне создайте что-то вроде проекта webAPI с помощью visual studio.

В этом проекте сначала создайте объект класса для обработки своих данных, как показано на этой странице...посмотрите на json с правой стороны.
https://wwrm.workwave.com/api/#orderschanged-notification

(синтаксис c#...не проверен, но чтобы помочь вам получить представление)
уведомление о классе{
общественные строку ордера{получить;набор}
public string territoryId{get;set;}
public string event{get;set;}
публичный список data{get;set;} (здесь нужно определить данные, так как они выглядят по-разному для каждого типа уведомления, но все они, похоже, имеют созданный, обновленный, удаленный объект)
}

Как только вы определите данные, которые, как вы знаете, вы получите от них, вы можете создать свой контроллер WebAPI. Так что, может быть, я сделаю контроллер под названием Notification.

публичный класс NotificationController: ApiController
{
[HttpPost]
public object Receive ([FromBody]Notification postedDataFromWorkWave)
{

// сделайте что-нибудь с опубликованными здесь данными

запрос на возврат.CreateResponse(HttpStatusCode. OK);
}
}


чтобы протестировать свой новый api, вы изменяете приведенный выше код, вызываете свой собственный сервис, берете образцы данных с сайта workwaves и отправляете их на него. Надеюсь, это поможет вам указать правильное направление.