【问题标题】:send html form via post to webservice通过 post 将 html 表单发送到 web 服务
【发布时间】:2012-07-31 17:36:27
【问题描述】:

我对 HTML5 开发非常陌生,这个问题可能很愚蠢,但我已经找到了答案(或者我已经很好地搜索了)。

我想通过 post 将表单发送到网络服务(我不想显示 URL 中的所有字段)。

我有两个问题:

  1. 我必须如何命名表单字段?如果我尝试发送userName,我想我必须将此测试作为 ID 放入将保存该值的字段。
  2. 这是因为我很好奇。发送到 Web 服务的 post 消息内容是什么?

这是我在网上搜索到的一个例子:

 <FORM action="http://somesite.com/prog/adduser" method="post">
    <P>
    <LABEL for="firstname">First name: </LABEL>
              <INPUT type="text" id="firstname"><BR>
    <LABEL for="lastname">Last name: </LABEL>
              <INPUT type="text" id="lastname"><BR>
    <LABEL for="email">email: </LABEL>
              <INPUT type="text" id="email"><BR>
    <INPUT type="radio" name="sex" value="Male"> Male<BR>
    <INPUT type="radio" name="sex" value="Female"> Female<BR>
    <INPUT type="submit" value="Send"> <INPUT type="reset">
    </P>
 </FORM

我认为在 Web 服务上处理它们时我需要这些 id 来获取这些值,不是吗?

【问题讨论】:

  • 嗯,这完全取决于网络服务。如果它是一个 [REST API][1],你可以发布到它。 [1]:en.wikipedia.org/wiki/Representational_state_transfer
  • 对不起,我不明白你:我必须如何命名表单字段?
  • 这取决于网络服务,以及网络服务的规范。你想连接什么网络服务?
  • @DavidEverlöf 你是什么意思:“你想连接什么网络服务?”?我还没有实现网络服务,我必须问别人。您是在问它是 REST、SOAP 还是其他 Web 服务?
  • 我不明白你也要实现自己的 web 服务,我以为你想与已经存在的 web 服务进行通信。

标签: forms html post


【解决方案1】:

这取决于,您可以通过重定向向页面发布帖子(在 .NET 中您可以这样处理):

<form action="http://myurl/postpage.ashx" method="post">
    <input name="forename" />
    <input name="surname" />
    <input type="submit" value="Submit" />
</form>

然后在 postpage.ashx 的服务器端脚本中使用:

string forename = Request["forename"];
string surname = Request["surname"];

您还可以使用 jQuery 对同一页面进行 ajax 调用,方法如下:

var forename = $("input[name=\"forename\"]").val();
var surname = $("input[name=\"surname\"]").val();

$.ajax({
    url: "http://myurl/postpage.ashx",
    type: "POST",
    async: true, // set to false if you don't mind the page pausing while waiting for response
    cache: false,
    dataType: "json",
    data: "{ 'forename': '" + forename + "', 'surname': '" + surname + "' }",
    contentType: "application/json; charset=utf-8",
    success: function(data) {
        // handle your successful response here
    },
    error: function(xhr, ajaxOptions, thrownError) {
        // handle your fail response here
    }
});

您可以以同样的方式在服务器端代码中处理帖子。这里要注意的关键是,无论您作为输入元素的 name 属性输入什么,都将作为键/值对发布到您的接收 URL。

【讨论】:

  • 您能否举例说明如何在 (ASP.NET) 网络方法中检索键/值对?我喜欢: [WebMethod(Description = "tests the method.")] public void TestMethod(String APP_VERSION_CODE) { // APP_VERSION_CODE 应该是值还是……?我不知道.. } 但我不断收到 ReportSenderException
【解决方案2】:

每个 Web 服务都应该给你类似WSDL 的东西,它通常包含你可以使用的可用字段和方法的规范。如果您要连接的 Web 服务具有 url webservice.com,则尝试使用 webservice.com/wsdl 获取 WSDL

查看这个话题:click

【讨论】:

  • 我在问我必须如何发送这些字段。我想我必须在表格上设置一些东西来识别它们。顺便说一下,网络服务还没有实现。
【解决方案3】:

属性“名称”是唯一的,以便将该参数传递给 Servlet(或任何地方)。然后 post 方法对消息进行加密并将其发送到 Servlet。

<form method="post" action = "LoginServlet">
     Name: <input type="text" name="userName">
     Password: <input type="password" name="password"> 

    <input type="submit" name = "Login" class="button">
</form>

为了访问该数据,您将在 Servlet 中执行以下操作:

String userName = request.getParameter("userName");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 2014-06-10
    • 2020-09-14
    • 2013-11-17
    相关资源
    最近更新 更多