C# 在这种情况下,如何使用二进制文件发出Post请求?
我有系统A(人们上传文件的Web界面)和系统B(文件归档系统) 步骤1)用户通过系统a提交文件 步骤2)系统A接收文件,并对其进行加密 步骤3)系统A通过调用系统B的端点()发送带有解密文件的Post请求 步骤4)系统B接收POST请求。然后归档文件 此时此刻,我陷入了第三步。我能够接收文件,但当系统a对文件发出Post请求时抛出异常 我正在尝试将csv文件发布到。然而,它回来了C# 在这种情况下,如何使用二进制文件发出Post请求?,c#,postman,restsharp,C#,Postman,Restsharp,我有系统A(人们上传文件的Web界面)和系统B(文件归档系统) 步骤1)用户通过系统a提交文件 步骤2)系统A接收文件,并对其进行加密 步骤3)系统A通过调用系统B的端点()发送带有解密文件的Post请求 步骤4)系统B接收POST请求。然后归档文件 此时此刻,我陷入了第三步。我能够接收文件,但当系统a对文件发出Post请求时抛出异常 我正在尝试将csv文件发布到。然而,它回来了 你知道下面的代码有什么错误吗 string path = "THE PATH OF THE FIL
string path = "THE PATH OF THE FILE";
byte[] file = System.IO.File.ReadAllBytes(path);
string filevalue = System.Convert.ToBase64String(file);
var client = new RestClient("http://127.0.0.1:8080/rest/bookstore/");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "text/csv");
request.AddParameter("text/csv", file , ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
您不需要重定向,只需:
public class BookstoreController : ApiController
{
public void Get() => Download();
}
public static void Download()
{
var client = new RestClient("...");
var request = new RestRequest("...", Method.POST);
var response = client.Execute(request);
client.DownloadData(new RestRequest("/file", Method.GET)).SaveAs("filename.csv");
Console.WriteLine("Output: ");
Console.WriteLine(response.Content);
}
本质上,您可以使用方法内容下载文件。但是创建客户机和请求,然后执行响应,但将数据从请求下载到响应中。然后它将强制浏览器为用户下载文件。您不需要重定向,只需:
public class BookstoreController : ApiController
{
public void Get() => Download();
}
public static void Download()
{
var client = new RestClient("...");
var request = new RestRequest("...", Method.POST);
var response = client.Execute(request);
client.DownloadData(new RestRequest("/file", Method.GET)).SaveAs("filename.csv");
Console.WriteLine("Output: ");
Console.WriteLine(response.Content);
}
本质上,您可以使用方法内容下载文件。但是创建客户机和请求,然后执行响应,但将数据从请求下载到响应中。然后它会强制浏览器为用户下载文件。今天我检查了系统日志。我发现了此消息(这意味着我的文件已存档) 信息11:15:01.938(FedoraLdp)获取资源“书店/cc51bc52-e59a-4e29-801a-e7d979326197” 所以我尝试提交Post请求并检查文件是否已存档。 最后发现该文件已归档,如系统日志所示。即使在Http Post响应中,它说我的请求不可接受
因此,我认为API端点没有返回正确的消息,也没有向我提供有关我发出的Http Post请求中缺少的内容的明确信息。今天,我检查了系统日志。我发现了此消息(这意味着我的文件已存档) 信息11:15:01.938(FedoraLdp)获取资源“书店/cc51bc52-e59a-4e29-801a-e7d979326197” 所以我尝试提交Post请求并检查文件是否已存档。 最后发现该文件已归档,如系统日志所示。即使在Http Post响应中,它说我的请求不可接受
因此,我认为API端点没有返回正确的消息,也没有为我提供有关Http Post请求中缺少的内容的明确信息。我有点困惑,您有一个
ValuesController
,它需要一个id,但您不使用该id,而是尝试重定向到另一个控制器以返回.csv?csv将以JSON或XML的形式返回-否则您只需下载文件,它就会在浏览器中返回。对不起,把你弄糊涂了。在我的情况下。控制器将从视图接收一个文件,并将其放置在一个文件夹中。然后我会将它重定向到我的另一个应用程序。我被困在提出发帖要求。我在《邮递员》中模拟了这个过程,没有问题。这就是为什么我怀疑我的代码中是否遗漏了什么。我有点困惑,您有一个valuescocontroller
,它需要一个id,但您不使用它,而是尝试重定向到另一个控制器以返回.csv?csv将以JSON或XML的形式返回-否则您只需下载文件,它就会在浏览器中返回。对不起,把你弄糊涂了。在我的情况下。控制器将从视图接收一个文件,并将其放置在一个文件夹中。然后我会将它重定向到我的另一个应用程序。我被困在提出发帖要求。我在《邮递员》中模拟了这个过程,没有问题。这就是为什么我怀疑我的代码是否遗漏了什么。嗨,格雷格。谢谢你的解决方案。很好。我会告诉你更多关于流动的信息。我有系统A(人们上传文件的Web界面)和系统B(文件归档系统)。1) 用户通过系统a提交文件2)系统a接收文件,并对其进行加密3)系统a将通过调用系统B的端点发送带有解密文件的Post请求4)系统B接收Post请求。然后归档文件。此时此刻,我陷入了第三步。我能够接收文件,但是当系统a对文件发出Post请求时抛出异常。Hi Greg。我已经更新了我的代码。我想我没有清楚地说明我的问题。所以你不能存档到服务器,它失败了吗?上面到底写了什么?嗨,格雷格。非常感谢。我的问题解决了。我已经检查了系统Hi Greg谢谢你的解决方案。很好。我会告诉你更多关于流动的信息。我有系统A(人们上传文件的Web界面)和系统B(文件归档系统)。1) 用户通过系统a提交文件2)系统a接收文件,并对其进行加密3)系统a将通过调用系统B的端点发送带有解密文件的Post请求4)系统B接收Post请求。然后归档文件。此时此刻,我陷入了第三步。我能够接收文件,但是当系统a对文件发出Post请求时抛出异常。Hi Greg。我已经更新了我的代码。我想我没有清楚地说明我的问题。所以你不能存档到服务器,它失败了吗?上面到底写了什么?嗨,格雷格。非常感谢。我的问题解决了。我已经检查过系统了