如何获取HTML发布数据并传递给Web服务?

时间:2012-01-06 03:41:17

标签: c# html wcf rest

我对使用WCF有一些了解,但我不知道如何构建它并能够从HTML-POST接收数据。
在我的示例中,Html是这样的:

<html>
<body>
    <form method="POST" action="#">
        Name:   <input type="text" id="txtName" value="" /><br />
        Age:    <input type="text" id="txtAge" value="" /><br />
        Address:<input type="text" id="txtAddress" value="" /><br />
        <input type="submit" value="Send" />
    </form>
</body
</html>  

我的WCF里面是:

namespace WCF
{
    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
    public class User
    {
        WebInvoke(UriTemplate = "", Method = "POST")]
        public DataFromHTMLPost(UserData instance)
        {
            throw new NotImplementedException();
        }
    }
}

有人可以就如何将数据从HTML-POST传递给webservice提出一些建议吗? 或者给我一些链接作为参考。非常感谢!

1 个答案:

答案 0 :(得分:0)

您需要从后面的代码中获取数据,然后将其传递给Web服务。

您可以在每个输入字段中添加runat =“server”,然后直接获取数据

txtName.Text

或者您可以通过

获取所有发布的数据
NameValueCollection nvc = Request.Form; 

String name = nvc["txtName"];

然后只需调用我认为您已在项目中添加为服务引用的Web服务?

UPDATE(自从学习访问.NET WCF的PHP客户端)

获取发布数据时请执行以下操作:

$item = $_POST['item'];

item是输入字段的名称。

连接到WCF的PHP代码(使用JSON)

  /**
    * @param $service name of JSON service to call
    * @return string url in string
    */
  function request_Url( $service )
{

return 'http://api.domain.com/api.svc'.'/'.$service

}

/**
 * 
 * @return array|false Contest List or false on failure
 */
function get_contestList() {

    $jsonStr = json_decode(file_get_contents($this->request_Url('MethodName')), TRUE);

    return $jsonStr;
}

在WCF中,您需要将方法签名更改为

[OperationContract]    
[WebGet(ResponseFormat = WebMessageFormat.Json, 
        RequestFormat = WebMessageFormat.Json,               
        UriTemplate = "/MethodName")]
public String MethodName()
{

}