如何从c#客户端发送补丁请求?

时间:2016-07-26 07:24:29

标签: c# tfs tfsbuild tfs2015

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

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

我试图使用Webclient在C#中重写它。

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

但我得到:远程服务器返回错误:(401)未经授权。

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

2 个答案:

答案 0 :(得分:8)

您在致电UploadString时缺少METHOD。

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

应该是:

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

401是未经授权的,因此您还需要在Powershell中找到登录或加入会话的步骤,您需要在C#中复制它。

答案 1 :(得分:1)

要发送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);