【问题标题】:How do you send a patch request from a c# client?如何从 c# 客户端发送补丁请求?
【发布时间】:2016-08-25 04:06:53
【问题描述】:

我有一个执行此操作的 powershell 脚本:

    $uri = "$($tfsUri)/$($teamproject)/_apis/build/builds/$($buildID)?api-version=2.0"
    $data = @{keepForever = $keepForever} | ConvertTo-Json
    $response = $webclient.UploadString($uri,"PATCH", $data) 

我正在尝试使用 Web 客户端在 C# 中重写它。

WebClient client = new WebClient();
client.Encoding = System.Text.Encoding.UTF8;
string reply = client.UploadString(url, "keepForever = true");
Console.WriteLine(reply);

但我得到:远程服务器返回错误:(401) Unauthorized.

这是 TFS 2015 VNext,如果有帮助的话。

【问题讨论】:

    标签: c# tfs tfsbuild tfs-2015


    【解决方案1】:

    您在致电UploadString 时遗漏了方法。

    string reply = client.UploadString(url, "keepForever = true");
    

    应该是:

    string reply = client.UploadString(url, "PATCH", "keepForever = true");
    

    401 未经授权,因此还要查看您的 Powershell 中是否有之前您正在登录或加入会话的步骤,您需要在 C# 中复制该步骤。

    【讨论】:

      【解决方案2】:

      要发送 PATCH 请求,您可以使用 WebClient.UploadData

      string data = "keepForever = true";
      WebClient client = new WebClient();
      client.Encoding = System.Text.Encoding.UTF8;
      string reply = client.UploadData(url, "PATCH", System.Text.Encoding.UTF8.GetBytes(data));
      Console.WriteLine(reply);
      

      【讨论】:

      • string reply 代码行的一个更正:client.UploadData returns a byte[],而不是字符串。
      猜你喜欢
      • 2011-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 2015-09-15
      • 2022-01-10
      • 1970-01-01
      相关资源
      最近更新 更多