【问题标题】:C# post file to serverC# 将文件发布到服务器
【发布时间】:2011-12-04 13:24:30
【问题描述】:

我正忙着将一个将音频文件发布到服务器的 perl 脚本转换为 C#

这是 perl 脚本:

#!/usr/bin/perl
require LWP::UserAgent; 
my $url = "url";
my $audio = "";
open(FILE, "<" . "test.flac");
while(<FILE>)
{
$audio .= $_;
}
close(FILE);
my $ua = LWP::UserAgent->new;
my $response = $ua->post($url, Content_Type => "audio/x-flac; rate=16000", Content =>   $audio);
if ($response->is_success)
{
print $response->content;
}
1;

这是我的 C# 代码

        string uriString = "url";
        WebClient myWebClient = new WebClient();
        myWebClient.Headers.Add("Content-Type: \"audio/x-flac; rate=16000\"");
        byte[] responseArray = myWebClient.UploadFile(uriString, "POST", "test.flac");
        string response = Encoding.ASCII.GetString(responseArray);
        Console.WriteLine(response);

由于某种原因,如果我运行 C# 代码,它会不断返回 400(错误请求)错误。

有人知道是什么原因造成的吗?提前致谢。

【问题讨论】:

  • 尝试使用 Fiddler 等工具比较 Perl 脚本与 C# 代码完成的请求。 fiddler2.com/fiddler2 您可能遗漏了一些细微的差别。
  • 我认为转义引号不应该在那里。试试"Content-Type: audio/x-flac; rate=16000"
  • 使用提琴手我发现 myWebClient.UploadFile 导致 Content-Type 变为 multipart/form-data 所以我想我需要一些其他方式来上传文件
  • 好的我解决了我的问题,我还不能发布答案,因为我的声誉不够高。

标签: c# post webclient


【解决方案1】:

这里有几个想法可能是什么问题......

  1. 使用替代重载来添加标题,这将有助于确保正确形成。

    myWebClient.Headers.Add("Content-Type", "audio/x-flac; rate=16000");
    
  2. 源文件名的路径不同... 尝试为正在上传的文件提供完全限定的路径。如果这可行,那么您就知道问题出在哪里,并在构建路径时做一些更合适的事情。

【讨论】:

    猜你喜欢
    • 2018-10-11
    • 2014-07-14
    • 2021-11-21
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 2014-11-30
    • 2017-07-27
    相关资源
    最近更新 更多