2017-10-05 51 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库。所以,如果你还没有完成它,你应该这样做,否则你可以使用另一个库,并相应地更改上面的代码。