Как отправить файл XML. WS от Безопасной Гавани " (сделано в PHP), используя RestSharp C#
Я пытаюсь интегрировать XML-файл, Кт-и с Веб-Пакетом от Безопасной Гавани " (сделано в PHP), используя RestSharp C# и всегда возвращает сообщение о том, что не удалось открыть XML или файл пуст. Даже поставив один и тот же код, предоставленный Почтальон использует, и не дает право, кажется, что проблема в том, что я отправляю файл, потому что они возвращают ошибку, как если размер файла был ноль. Отправка по крайней Почтальон дает право.
Хотел бы видеть, если кто-то уже была эта проблема при интеграции XML-файла, КТ-и для записи с помощью Веб-Службы JSON от Безопасной Гавани.
Ниже приведен пример кода, минимум с моих попыток, и возвращение полученной, также как и ссылку на руководство по безопасной гавани.
Уже сделал несколько попыток различных способов включить этот XML в request и без успеха. Надеюсь, что смогут помочь мне. Обязанный.
Код
// CÓDIGO
public static void testeIntegracaoRest()
{
var link = "https://www.averbeporto.com.br/websys/php/conn.php";
var client = new RestClient(link);
var request = new RestRequest(Method.POST);
var parametros = @"mod=login&comp=5&user=00234567000122&pass=0023";
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", parametros, ParameterType.RequestBody);
var login = client.Execute(request);
if (login.StatusCode == HttpStatusCode.OK)
{
// continua
var cookies = login.Cookies;
var restResponseCookie = new RestResponseCookie();
restResponseCookie = cookies[0];
client = new RestClient("https://www.averbeporto.com.br/websys/php/conn.php");
request = new RestRequest(Method.POST);
request.AddCookie(restResponseCookie.Name, restResponseCookie.Value);
request.AddHeader("content-type", "multipart/form-data;boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
byte[] array = File.ReadAllBytes("C:\\XML0702794600019004-05-20188001.xml");
request.AddParameter("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
"------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"comp\"\r\n\r\n5\r\n" +
"------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"mod\"\r\n\r\nUpload\r\n" +
"------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"path\"\r\n\r\neguarda/php/\r\n" +
"------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"file\"; " +
"filename=\"C:\\XML0702794600019004-05-20188001.xml"\r\nContent-Type: " + "application/xml\r\n\r\n\r\n" +
"------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"dump\"\r\n\r\n1\r\n",
ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
}
}
Возврат WS
// RETORNO WS
{"success":1,"S":{"P":0,"D":0,"R":0,"N":1},"prot":null,"error":{"msg":"Error opening XML","code":"03"},"dump":{"POST":{"comp":"5","mod":"Upload","path":"\/var\/www\/averbeporto.com.br\/web\/websys\/eguarda\/php\/","dump":"1","v":2,"ext":".php"},"COOKIE":{"portal":{"ses":"e002f119bb4d854b96ebd9c4c85b84f7"}},"FILES":{"file":{"name":"XML0702794600019004-05-20188001.xml","type":"application\/xml","tmp_name":"\/var\/www\/clients\/client0\/web124\/tmp\/phpqspsPj","error":0,"size":0}}}}
// LINK MANUAL PORTO SEGURO
https://docs.google.com/document/d/1da005UzBF1Wzm8LmiB4JJnaXaLXtFKgl6S_rErMlXF8/edit
2 answers
, а не делать весь этот процесс, вы можете просто использовать метод addFile
ex:
if (login.StatusCode == HttpStatusCode.OK)
{
// continua
var cookies = login.Cookies;
var restResponseCookie = new RestResponseCookie();
restResponseCookie = cookies[0];
client = new RestClient("https://www.averbeporto.com.br/websys/php/conn.php");
request = new RestRequest(Method.POST);
request.AddCookie(restResponseCookie.Name, restResponseCookie.Value);
restRequest.AddHeader("Content-Type", "multipart/form-data");
request..AddFile("content", "C:\\XML0702794600019004-05-20188001.xml");
IRestResponse response = client.Execute(request);
}
Решена не с помощью RestSharp.
public async void Testar()
{
var link = "https://www.averbeporto.com.br/websys/php/conn.php";
var client = new RestClient(link);
var request = new RestRequest(Method.POST);
var parametros = @"mod=login&comp=5&user=00234567000122&pass=0023";
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", parametros, ParameterType.RequestBody);
var login = client.Execute(request);
var restResponseCookie = new RestResponseCookie();
if (login.StatusCode == HttpStatusCode.OK)
{
var cookies = login.Cookies;
restResponseCookie = cookies[0];
}
System.Net.WebClient oWeb = new System.Net.WebClient();
oWeb.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
oWeb.Headers.Add(HttpRequestHeader.Cookie, restResponseCookie.Name + "=" + restResponseCookie.Value);
NameValueCollection parameters = new NameValueCollection();
parameters.Add("comp", "5");
parameters.Add("mod", "Upload");
parameters.Add("path", "eguarda/php/");
parameters.Add("dump", "1");
parameters.Add("Content-Type", "application/xml");
oWeb.QueryString = parameters;
var responseBytes = oWeb.UploadFile(link, @"C:\Teste\XML0702794600019004-05-20188001.xml");
string response = Encoding.ASCII.GetString(responseBytes);
}