2017-10-05 69 views
0

我做了一個POST請求代碼,指向一個API來執行自動交換程序。 下面是代碼:把一個POST請求的一部分放在變量中

string webAddr = "https://shapeshift.io/shift"; 

      var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr); 
      httpWebRequest.ContentType = "application/json; charset=utf-8"; 
      httpWebRequest.Method = "POST"; 

      using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
      { 
       string json = "{ \"withdrawal\" : \"***ADDRESS WITH LETTER AND NUMBER***\", \"pair\" : \"eth_xmr\" }"; 

       streamWriter.Write(json); 
       streamWriter.Flush(); 
      } 
      var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
      using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
      { 
       var responseText = streamReader.ReadToEnd(); 
       Console.WriteLine(responseText); 
      } 

和執行的代碼後,我得到這個在控制檯

{"orderId":"1f90346c-c6d4-4d89-a24c-78b2bbdb6292","deposit":"0x534aa684274b4711f65b2d0e2e403cb169201255","depositType":"ETH","withdrawal":"***ADDRESS WITH LETTER AND NUMBER***","withdrawalType":"XMR" 

現在,我希望把從沉積物我是從獲取地址把API變成一個字符串變量。我嘗試了一些代碼,但我無法使其工作。那麼我怎樣才能把這個地址放在一個字符串變量中呢?

回答

1

你可以反序列化響應並從那裏得到你想要的。爲了做到這一點,你可以定義一個類,我們將其命名爲ApiResponse

public class ApiResponse 
{ 
    [JsonProperty("orderId")] 
    public string orderId { get; set; } 

    [JsonProperty("deposit")] 
    public string deposit { get; set; } 

    [JsonProperty("depositType")] 
    public string depositType { get; set; } 

    [JsonProperty("withdrawal")] 
    public string withdrawal { get; set; } 

    [JsonProperty("withdrawalType")] 
    public string withdrawalType { get; set; } 
} 

然後

var responseText = streamReader.ReadToEnd(); 

後做出反序列化:

var apiResponse = JsonConvert.DeserializeObject<ApiResponse>(responseText); 

我已經使用了Json.NET庫。所以,如果你還沒有完成它,你應該這樣做,否則你可以使用另一個庫,並相應地更改上面的代碼。