C#等价于requests.post()函数

时间:2015-11-15 23:15:02

标签: python-requests

我将一些python脚本转换为C#等效脚本。当我运行以下脚本(使用请求模块)时,服务器很高兴并且它没有问题:

auth_header = {'Authorization': 'Bearer ' + access_token}
r = requests.post(api_url + '/v1/instances', headers=auth_header, json =params)

但是,当我运行以下C#等效代码时,服务器返回" 405 METHOD NOT NOTOWED":

HttpClient client  = new HttpClient();
client.BaseAddress = new Uri(api_url);

client.DefaultRequestHeaders.Authorization = new 
          System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", access_token);
          // Add an Accept header for JSON format.
          client.DefaultRequestHeaders.Accept.Add(
          new MediaTypeWithQualityHeaderValue(@"application/json"));
          string jsonDumps = JsonConvert.SerializeObject(parameters);
          var content = new StringContent(jsonDumps, Encoding.UTF8,@"application/json");
          var postResult = client.PostAsync(@"v1/pipelines", content).Result; // ERROR: 
             //StatusCode: 405, ReasonPhrase: 'METHOD NOT ALLOWED'.

值得注意的是,当我运行GET方法时没有问题:

var response = client.GetAsync(@"v1/pipelines").Result; 

我无法访问服务器代码。我试图使用Fiddler(类似于wire shark)来查看python代码发送到服务器但是使用Fiddler导致python脚本无法正常工作,说明SSLError:CERTIFICATE_VERIFY_FAILED]。

1 个答案:

答案 0 :(得分:1)

快速浏览一下,C#代码看起来是正确的。但是,我认为您要发布到两个不同的端点:Python到/ v1 / instances和C#到/ v1 / pipelines。尝试交换它们,看看会发生什么。