Как отправить файл 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

Author: Icaro Martins, 2019-05-13

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);
    }
 1
Author: Lucas Miranda, 2019-05-13 20:19:03

Решена не с помощью 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);

    }
 1
Author: Lucas Fernandes, 2019-05-14 18:10:35