我有一个接收结构数组的 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/