Как получить html-данные и передать их веб-сервису? - PullRequest
0 голосов
/ 06 января 2012

У меня есть некоторые знания по использованию 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 в веб-сервис?
Или дать мне несколько ссылок в качестве ссылки.Большое спасибо!

1 Ответ

0 голосов
/ 06 января 2012

Вам нужно будет захватить данные из кода и затем передать их веб-службе.

Вы можете добавить runat = "server" в каждое из этих полей ввода и получить данные напрямую

txtName.Text

или вы можете получить все опубликованные данные по

NameValueCollection nvc = Request.Form; 

String name = nvc["txtName"];

Затем просто позвоните в веб-службу, которую, как я полагаю, вы добавили в качестве ссылки на службу в своем проекте?

ОБНОВЛЕНИЕ (С момента изучения PHP-клиента, обращающегося к .NET WCF)

Для получения почтовых данных сделайте следующее:

$item = $_POST['item'];

имя элементаполя ввода.

PHP-код для подключения к WCF (с использованием 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()
{

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...