wcf - 在 HTTP GET 中将结构数组作为 WCF 方法参数传递

标签 wcf arrays http struct get

我有一个接收结构数组的 WCF 方法。 该结构包含两个字符串“Key”和“Value”:

public struct mydata
{
    public String key;
    public String value;
}

[ServiceContract]
public interface IBasicService
{

    [OperationContract]
    [WebGet(UriTemplate = "ReceiveStructsOfData?myDataArray={???????? WHAT DO I WRITE HERE?????}")] 
    void ReceiveStructsOfData(mydata[] myDataArray);

}

我希望该方法支持 HTTP“GET”。 我已经知道如何配置 WCF 以支持“GET”(端点和 WebGETAttribute)。 我在 WebGet 的 UriTemplate 中写了什么(见上面的例子)??

客户端代码使用 Framework 2.0 (HttpWebRequest) 会是什么样子?

HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost/BasicWCF/BasicService.svc/ReceiveStructsOfData?myDataArray={???????? WHAT DO I WRITE HERE?????}");
        myHttpWebRequest.Method = "GET";
        HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();

谢谢你...

最佳答案

您在花括号之间提供的是参数的名称,它将被一个值替换。所以服务方法看起来像:

[OperationContract]  
[WebGet(UriTemplate = "ReceiveStructsOfData?myDataArray={myDataArray}")]  
void ReceiveStructsOfData(mydata[] myDataArray)
{
}

请注意大括号之间的字符串与参数名称相同 - 这就是请求到方法的映射方式。

调用服务时,注意将数组序列化为字符串。毕竟,您是在 URL 中传递参数,它本身就是一个字符串。通常我不会将这样的参数传递给 GET 方法。如果它是 PUT 方法并且您在请求中传递参数(而不是 URL),那么您可以将它们序列化为 JSON 或 XML,具体取决于服务。

关于wcf - 在 HTTP GET 中将结构数组作为 WCF 方法参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3777695/

相关文章:

wpf - 登录窗口到 Prism 中的主窗口 (WPF)

asp.net - 当 ConcurrencyMode = Multiple 时,两个并行 WCF 请求是否可以由同一线程处理

将位域转换为字节数组

c - 使用 txt 文件输入过滤 C 中的数据列

http - Google 云负载均衡器未返回内容编码 : gzip

c# - WCF 期望每个请求的 header

c# - 如何在 WCF RESTful 服务上启用 HTTPS?

javascript - TypeError : undefined is not an object , 项目来自 API 的数组

php - 如何以分页方式从 YouTube 获取用户视频

javascript - 如何从在 node.js 中发出 HTTP 请求的函数返回值?