在进入细节之前,我知道Stackoverflow上有很多对话和相关问题.所有这些都以不同的方式帮助我,所以我认为我把我的发现全部放在一起作为一个单独的有组织的常见问题解答来总结我的发现.
当然你知道这些,但我只是把它们写成快速回顾.如果我遗漏了什么,请随时编辑.
当您愿意将对象发送到Web服务或服务器端应用程序时,将使用发布请求.
是将对象从Web浏览器传递到服务器端应用程序的过程.可以使用jQuery Ajax调用或Curl post请求.
最流行的那些日子是JSON和XML.由于XML标记的性质,序列化的xml对象的大小相对较大,因此XML变得越来越不受欢迎.在本FAQ中,主要关注的是JSON2序列化.
Spring框架及其强大的注释使得以有效的方式公开Web服务成为可能.Spring中有很多不同的库.我们关注的是Spring web MVC.
这些是您可以用来在客户端发布帖子请求的工具.即使您计划使用JQuery ajax调用,我建议您使用Curl进行调试,因为它会在发出请求后为您提供详细的响应.
如果您的Web服务不依赖于Java EE模型,则必须使用@RequestBody.如果您正在使用模型并且您的JSON对象已添加到模型中,则可以通过@ModelAttribute访问该对象.仅在您的请求是GET请求或GET和POST请求组合的情况下,您将需要使用@RequestParam/@ PathVariable.
正如您从名称中看到的那样简单,如果您在服务器端方法处理请求后向客户端发送响应,则只需要@ResponseBody.
RequestMappingHandlerAdapter是Spring框架的新映射处理程序,它自Spring 3.1起取代了AnnotationMethodHandlerAdapter.如果您的现有配置仍在AnnotationMethodHandlerAdapter中,您可能会发现此帖子很有用.我的帖子中提供的配置将让您了解如何设置RequestMappingHandlerAdapter.
您需要设置一个消息转换器.这是您的序列化JSON消息体在服务器端转换为本地Java对象的方式.
基本配置从这里开始.转换器是MarshallingHttpMessageConverter和CastorMarshaller的基本配置示例,我已经用MappingJackson2HttpMessageConverter和MappingJacksonHttpMessageConverter替换它们.
我的项目设置方式,我有两个配置文件:
hadlerAdapter bean必须位于MVC Dispatcher XML文件的后面.
<bean name="handlerAdapter"
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
<ref bean="jsonConverter"/>
</list>
</property>
<property name="requireSession" value="false"/>
</bean> …Run Code Online (Sandbox Code Playgroud) 我有一个表单,用户输入无限数量的数据行.他们通过在屏幕上输入他们想要的任意数量的行来到达表单.
<?php
$numRows = $_GET['NUM_ROWS_REQUESTED'];
?>
<form method="post">
<?php
for($i = 0; $i < $numRows ;$i++) {
$uuid = uniqid();
?>
<input type="text" name="MYDATA[<?php print $uuid; ?>][FIRST_NAME]" />
<input type="text" name="MYDATA[<?php print $uuid; ?>][LAST_NAME]" />
<?php
}
?>
</form>
Run Code Online (Sandbox Code Playgroud)
我想知道,当表格被张贴并且我在$_POST['MYDATA']阵列中收到这些记录时,如果可以保证它们将按照它们在屏幕上发布的顺序排序.或者它们会被uniqid()随机生成的那个订购?
我使用唯一ID而不仅仅是更容易排序的整数的原因是用户可以删除行并使用该页面上的javascript添加其他行.检查碰撞太难了.
我一直在慢慢学习PHP,并且已经找到了关于这个主题和其他开发人员发布的解决方案的一系列信息.我试图让一个Android应用程序通过HTTP post将文件上传到PHP服务器.但是,在我的服务器端尝试使用PHP写入文件时,某些功能无效.
这是PHP代码:
// Where the file is going to be placed
$target_path = "/var/www/media2net/uploads/uploads";
/* Add the original filename to our target path.
Result is "uploads/filename.extension" */
$target_path = $target_path . basename($_FILES['uploadedfile']['name']);
if (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['uploadedfile']['name']) .
" has been uploaded";
chmod("uploads/" . basename($_FILES['uploadedfile']['name']), 755);
} else {
echo "There was an error uploading the file, please try again!";
echo "filename: " . basename( $_FILES['uploadedfile']['name']);
echo " target_path: " .$target_path;
}
Run Code Online (Sandbox Code Playgroud)
我已经从检查客户端的线鲨已经知道http发送是正确的,我也确保我正在写文件的目录具有正确的权限,并且php安全模式设置为关闭.
apache2 …
我正在使用以下HTML初始化文件上传:
<form enctype="multipart/form-data" action="PHPScripts/upload.php" method="POST">
<input type="file" id="browseButton" name="image" onchange="this.form.submit();" />
</form>
Run Code Online (Sandbox Code Playgroud)
Upload.php脚本如下所示:
<?php
$file = $_FILES["image"];
$filepath = $file["name"];
$filetmp = $file["tmp_name"];
$filesize = $file["size"];
$filename = basename($filepath);
$filetype = substr($filename, strrpos($filename, ".") + 1);
...
?>
Run Code Online (Sandbox Code Playgroud)
我需要再传递一个参数到我的PHP脚本,但我不知道如何.HTTP方法是POST(可以在上面的代码中看到),但是我应该在哪里放置参数?这甚至可能吗?谢谢你向我澄清这一点.
我有一个看起来像这样的表单:
<form action="/assesment/savelist/" method="post">
<input type="hidden" name="owner" value="<?php echo $userid ?>" />
<input type="text" name="title" value="Question List Title" />
<textarea name="description"></textarea>
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
在描述中,人们必须能够使用该£字符(以及其他不允许的字符).
无论如何将这些字符转换为允许在将它们发布到我的PHP页面之前允许的内容?
大家好,感谢您的评论到目前为止.
如果我在"savequestion"上执行print_r($ _ POST),它将从该表单发送给它的postdata.
但是,如果任何字段中有£,则该特定字符不会被发送.例如,如果我要从该表单发布"sdfsdfs£adasd",那么所有发送的内容都是"sdfsdfs adasd"
问题是如何将£转换为我可以从HTML表单发布的数据.
我有一个脚本可以使用xmlrpc将一些数据发布到wordpress。
如果我对“ This is a test”这样的正文使用简单的字符串,则效果很好。
但是,如果其中包含任何HTML格式,则在尝试添加帖子时,它会受到严重破坏。
如何使用xmlrpc将html内容发布到wordpress?
我有一个JSF页面,它将数据发布到外部页面.数据从JSF托管bean加载,该bean在post数据中生成唯一ID.
我有一个问题,用户点击结帐按钮然后导航回同一页面并再次按下结帐按钮.帖子数据尚未更新.而且,bean根本没有被调用.反正是否强制JSF重新加载页面和表单数据?
<form action="#{checkoutBean.externalUrl}" method="post"
id="payForm" name="payForm">
<input type="hidden" value="#{checkoutBean.uniqueID}" />
<input type="submit" value="Proceed to Checkout" />
</form>
Run Code Online (Sandbox Code Playgroud)