Конвертировать GetEntity ().GetContent() из Java в C#

При использовании restAPI в C# необходимо преобразовать следующий код из Java в C#.

в Java :

HttpGet statusGet = new HttpGet(fileUrl);
    statusGet.setHeader("X-API-TOKEN", API_TOKEN);
HttpResponse response = httpClient.execute(statusGet);

    // Extract exported file
    ZipInputStream zs = new ZipInputStream(response.getEntity().getContent());

В C# это то, что у меня есть:

            var client1 = new RestClient(fileUrl);
            var request1 = new RestRequest(Method.GET);
            request1.AddHeader("X-API-TOKEN", "API_TOKEN");
            request1.AddHeader("content-type", "application/json");
            request1.AddParameter("application/json", "{nt"format" : "csv",nt"surveyId" : "_surveyId"n}", ParameterType.RequestBody);
            IRestResponse responsedata = client1.Execute(request1);

var download=client1.DownloadData(request1);
MemoryStream stream = new MemoryStream(download);
ZipInputStream zs = new ZipInputStream(stream);
using (ZipFile zip1 = ZipFile.Read(zs))

Я понятия не имею, как реализовать ответ.getEntity ().getContent (). Я считаю, что он получает поток(содержащий zip-файл?)
Обновлено: таким образом, я получаю массив байтов от client1.DownloadData (request1), похоже, не правильно конвертировать его в поток (имеет исключение readtimeout). и он не сможет читать из zipfile.читать
Большое спасибо за вашу помощь

1 ответ

  1. Вы получаете какие-то конкретные ошибки? Похоже, что вы реализуете это с помощью RestSharp . Вы следили за их примерами и читали их документацию?

    Я лично не использовал это стороннее решение, но сразу на первой странице у них есть следующий пример, который делает именно то, что вы пытаетесь сделать:

    var client = new RestClient("http://example.com");
    // client.Authenticator = new HttpBasicAuthenticator(username, password);
    
    var request = new RestRequest("resource/{id}", Method.POST);
    request.AddParameter("name", "value"); // adds to POST or URL querystring based on Method
    request.AddUrlSegment("id", "123"); // replaces matching token in request.Resource
    
    // easily add HTTP Headers
    request.AddHeader("header", "value");
    
    // add files to upload (works with compatible verbs)
    request.AddFile(path);
    
    // execute the request
    IRestResponse response = client.Execute(request);
    var content = response.Content; // raw content as string
    
    // or automatically deserialize result
    // return content type is sniffed but can be explicitly set via RestClient.AddHandler();
    RestResponse<Person> response2 = client.Execute<Person>(request);
    var name = response2.Data.Name;
    
    // easy async support
    client.ExecuteAsync(request, response => {
        Console.WriteLine(response.Content);
    });
    
    // async with deserialization
    var asyncHandle = client.ExecuteAsync<Person>(request, response => {
        Console.WriteLine(response.Data.Name);
    });
    
    // abort the request on demand
    asyncHandle.Abort();
    

    Похоже, что вы хотите получить доступ к IRestResponse.Contentсвойству или десериализовать с помощью RestClient.Execute<T>(RestRequest request)функции.