2015-11-15 61 views
0

我正在將一些python腳本轉換爲它的C#等價物。當我運行下面的腳本(使用請求模塊),服務器是高興,有一個與它沒有任何問題:C#相當於requests.post()函數

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

然而,當我運行下面的C#等價代碼,服務器返回「405不允許的方法「:

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(類似於線鯊魚)來查看Python代碼發送到服務器的內容,但是使用Fiddler導致python腳本無法正常工作,指出SSLError:CERTIFICATE_VERIFY_FAILED]。

+1

我認爲你發佈到兩個不同的端點 - Python到/ v1 /實例和C#到/ v1 /管道。嘗試交換他們,看看會發生什麼。 – Gnat

+0

哇!我不敢相信我犯了這樣一個小錯誤。我浪費了3天時間。它現在有效。請把你的評論作爲答案。 –

+0

我們都去過那裏! :-)答案已發佈。 – Gnat

回答

1

乍一看,C#代碼看起來是正確的。不過,我認爲你要發佈到兩個不同的端點:Python到/ v1 /實例和C#到/ v1 /管道。嘗試交換他們,看看會發生什麼。