【问题标题】:Rest API C# - how is it possible to pass Stream argumentRest API C# - 如何传递 Stream 参数
【发布时间】:2014-05-11 18:42:34
【问题描述】:

我需要调用以下 REST API

[OperationContract]
[WebInvoke(Method = "POST",
UriTemplate = "/{subscriptionId}/servers?op=ChangeSubscription")]
Stream ChangeAllServersSubscription(string subscriptionId, Stream requestStream);

如何创建和传递Stream requestStream? 流将包含 JSON 格式的字符串

【问题讨论】:

  • 这是什么语言?
  • 这个流需要包含什么?我们需要更多关于你想要做什么的细节
  • @YuvalItzchakov 它应该包含 JSON 格式的字符串
  • 流中的格式化字符串?

标签: c# json rest stream


【解决方案1】:

在使用任何类型的 Stream 之前,您应该询问 API 供应商他希望接收哪个流。

这是一个使用 MemoryStream 的示例,在您创建 JSON 之后:

// Random objects, just to make the code clear
var myObject = new {Name = "Yakov"};
var myId = "1";
var myJson = JsonConvert.SerializeObject(myObject);

// Create a MemoryStream (Encoding should be as needed)
var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(myJson));

// Call your code
var responseStream = ChangeAllServersSubscription(myId, memoryStream);

// And dispose the MemoryStream after you're done.
memoryStream.Dispose();

【讨论】:

    【解决方案2】:

    您可以在客户端创建一个HttpWebRequest,将网址设置为指向您的服务,设置适当的方法——在您的情况下为POST。例如:

    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://server/id/servers?op=ChangeSubscription");
    request.Method = "POST";
    

    然后在客户端使用GetRequestStream()获取流,将你的json写入这个流,关闭流,然后调用GetResponse()执行请求。

        Stream stream= request.GetRequestStream();
        //stream.Write write contents of your file here!
        stream.Close();
        HttpWebResponse response= (HttpWebResponse)request.GetResponse();
        //process the response from server
    

    如果一切顺利,您的网络服务将受到攻击并接收您的文件。

    【讨论】:

      猜你喜欢
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 2016-10-28
      • 2012-08-01
      相关资源
      最近更新 更多