Я надеюсь, что кто-то может помочь с реальным примеромPOST данных с запросом, чтобы получить SessionToken
Из различных сообщений я получил это далеко, но я получаю Bad Request.
В основном я пытаюсь войти в систему, используя ключ AppToken, а затем извлекаю SessionToken из ответа. Это информация, они размещены с их API документации
- Запрос (JSON)
- POST/Войти/приложение
- Content-Type: применение/JSON
- { "Имя": "MICROS", "Key": "longstringasyourpasscodegeneratedfromtheapplication"}
реакция выглядит следующим образом (при использовании Simple REST Client)
<Login xmlns="http://schemas.datacontract.org/2004/07/Tamigo.Services.Entities" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><DefaultCompanyId i:nil="true"/><DefaultCompanyName i:nil="true"/><DefaultDepartmentId i:nil="true"/><DefaultDepartmentName/><Email/><EmployeeId i:nil="true"/><ImageUrl i:nil="true"/><MenuId>0</MenuId><Name i:nil="true"/><Password/><Role>Application</Role><SessionToken>e1f35353-08f7-4213-a6b9-251313b36701</SessionToken></Login>
И от этого ответа мне нужно как-то получить «SessionToken» в переменную, которая будет использоваться в следующем запросе GET.
Это код, который я собрал до сих пор, который представляет собой фрагменты кода, которые я мог найти из других подобных вопросов (что, конечно же, не очень хорошо вписывалось в мой, по-видимому, совершенно уникальный/никогда не видный до типа запроса):
using System;
using System.Xml;
using System.Net;
using System.Text;
using System.IO;
namespace RESTServicesXMLParseExample
{
class Program
{
static void Main(string[] args)
{
try
{
var request =
(HttpWebRequest)WebRequest.Create("https://api.tamigo.com/login/application");
var postData = "Name=test";
postData += "&Key=y3LIZ5u5yR9A7a98ypBdygQyIBrqQwZdfdfZKmgtErQ=";
var data = Encoding.ASCII.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
//Create the REST Services 'Find by Query' request
XmlDocument locationsResponse = MakeRequest(responseString);
ProcessResponse(locationsResponse);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.Read();
}
}
//Submit the HTTP Request and return the XML response
public static XmlDocument MakeRequest(string requestUrl)
{
try
{
HttpWebRequest request = WebRequest.Create(requestUrl) as HttpWebRequest;
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(response.GetResponseStream());
return (xmlDoc);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.Read();
return null;
}
}
static public void ProcessResponse(XmlDocument locationsResponse)
{
//Create namespace manager
XmlNamespaceManager nsmgr = new XmlNamespaceManager(locationsResponse.NameTable);
nsmgr.AddNamespace("rest", "http://schemas.datacontract.org/2004/07/Tamigo.Services.Entities");
XmlNodeList formattedAddressElements = locationsResponse.SelectNodes("//rest:SessionToken", nsmgr);
Console.WriteLine("SessionToken");
foreach (XmlNode SessionToken in formattedAddressElements)
{
Console.WriteLine(SessionToken.InnerText);
}
Console.WriteLine();
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
}
}