我开发了一个休息服务器,我把它放在localhost中运行,我正在尝试使用JMeter执行测试,发送请求post和gets(取决于被调用的方法).
我已经发送到Rest服务器并在简单的帖子请求中得到JMeter的结果,获取请求,发送带有帖子的文件,并发送带有帖子的Json.
但我不知道如何将Form-UrlEncoded对象发送到服务器.我的Rest服务器消耗了application/x-www-form-urlencoded,我需要发送3个String参数.
有一些方法可以设置MimeType每个参数并执行测试吗?
我正在使用Jmeter 2.7
我通过禁用选项解决了这个问题:
use multipart/form-data for post
Run Code Online (Sandbox Code Playgroud)
并启用:
redirect automatically
Run Code Online (Sandbox Code Playgroud)
代替:
follow redirect
Run Code Online (Sandbox Code Playgroud)
我通常在表"使用请求发送参数"中的参数与每个相应的名称.
我希望使用jQuery和FormData通过ajax将图像上传到服务器.
我的jQuery代码如下
var formData = new FormData("form")[0];
var fileName = $("#InputLogo")[0].files[0].name;
$.ajax ( {
url : 'upload.php',
type : 'POST',
data : { "data" : formData, "fileName" : fileName },
processData : false,
success : function(data) {
console.log(data);
alert(data);
}
});
Run Code Online (Sandbox Code Playgroud)
当用户选择要上载的新文件时,将调用此代码.
我的服务器后端是PHP,它按如下方式处理请求
$data = $_POST['data'];
$fileName = $_POST['fileName'];
$fp = fopen('/img/'.$fileName, 'w');
fwrite($fp, $data);
fclose($fp);
$returnData = array("data" => $data);
print_r($_POST);
Run Code Online (Sandbox Code Playgroud)
POST请求确实发生,但$ _POST仍为空.
我试着寻找解决方案,但找不到一个确切的解决方案.
任何建议,将不胜感激.
编辑: 这是HTML中的表单
<form id=card-form" method="post" action="" >
<div class="form-group">
<label for="InputName">Name of …Run Code Online (Sandbox Code Playgroud) 这是示例代码(http://jsfiddle.net/epsSZ/1/):
HTML:
<form enctype="multipart/form-data" action="/echo/html" method="post" name="fileinfo" accept-charset="windows-1251">
<label>Label:</label>
<input type="text" name="label" size="12" maxlength="32" value="får løbende" /><br />
<input type="submit" value="Send standart">
</form>
<button onclick="sendForm()">Send ajax!</button>
Run Code Online (Sandbox Code Playgroud)
JS:
window.sendForm = function() {
var oOutput = document.getElementById("output"),
oData = new FormData(document.forms.namedItem("fileinfo"));
var oReq = new XMLHttpRequest();
oReq.open("POST", "/echo/html", true);
oReq.send(oData);
}
Run Code Online (Sandbox Code Playgroud)
当我通过标准格式提交提交这种旧方式时,请求有效负载如下所示:
------WebKitFormBoundary2890GbzEKCmB08rz
Content-Disposition: form-data; name="label"
får løbende
Run Code Online (Sandbox Code Playgroud)
但是当我提交这种AJAX方式时,它看起来有点不同:
------WebKitFormBoundaryPO2mPRFKj3zsKVM5
Content-Disposition: form-data; name="label"
får løbende
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,在前一种情况下有一些字符被字符实体替换,但是在使用的情况下FormData有普通的字符串,这当然很好,因为它是utf-8,但是有没有可能使它表现得像标准表格提交?
javascript ajax form-data character-encoding xmlhttprequest-level2
我有一个形式的POJO:
@Data
public class BaseRequest {
private String type;
private Map<String, Object> details;
private Map<String, Object> signature;
}
Run Code Online (Sandbox Code Playgroud)
我正在运行一个仅接受内容类型的服务:“ application / x-www-form-urlencoded”。
我已经用Java编写了一个客户端,该客户端使用Spring的RestTemplate进行调用。
public String getInvoice(BaseRequest req, String url) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<BaseRequest> httpEntity = new HttpEntity<BaseRequest>(req, headers);
String response = this.restTemplate.postForObject(url, httpEntity, String.class);
return response;
}
Run Code Online (Sandbox Code Playgroud)
但是,它将引发错误:
org.springframework.web.client.RestClientException: Could not write request: no suitable HttpMessageConverter found for request type [com.x.y.z.BaseRequest] and content type [application/x-www-form-urlencoded]
Run Code Online (Sandbox Code Playgroud)
如果我将内容类型设置为JSON,它将起作用:
headers.setContentType(MediaType.APPLICATION_JSON);
Run Code Online (Sandbox Code Playgroud)
我知道它适用于JSON,因为我已经用JacksonHTTPMessageConverter配置了RestTemplate Bean。因此,我可以轻松地将POJO转换为application / json。但是,我不知道如何使用application / x-www-form-urlencoded做到这一点。
我已经搜索了一段时间,发现的唯一解决方案是编写自己的转换器,将BaseRequest类转换为Spring的MultiValueMap,然后Spring的FormHttpMessageConverter将自动处理它。但我想避免这样做。还有其他解决方法吗?
任何线索将不胜感激。谢谢!
编辑:我的问题不同于 …
我的观点是HTML 5.我正在使用FormData对Servlet进行AJAX 2 POST.在servlet内部我正在尝试读取请求参数.我看不到任何参数.但是,Google Chrome开发者控制台会显示请求的有效负载.如何在Servlet代码中获得相同的内容?任何帮助将不胜感激.这是代码.
JS代码
var xhr = new XMLHttpRequest();
var formData = new FormData();
formData.append('firstName', 'ABC');
formData.append('lastName', 'XYZ');
xhr.open("POST", targetLocation, true);
xhr.send(formData);
Run Code Online (Sandbox Code Playgroud)
Servlet代码(两个参数都返回null)
out.println("Hello! "+ request.getParameter("firstName")+ " "+ request.getParameter("lastName")+ ", thanks for sending your feedback." );
Run Code Online (Sandbox Code Playgroud)
谷歌Chrome控制台
Content-Disposition: form-data; name="firstName"
XYZ
Content-Disposition: form-data; name="lastName"
ABC
Run Code Online (Sandbox Code Playgroud) 我正在尝试查看内部包含的内容[object FormData],特别是在名称应该包含的特定元素内Name.我想提醒它,检查内容是否正确,但这样做会返回undefined:
alert(fd['Name']);
Run Code Online (Sandbox Code Playgroud)
我很确定我正在正确加载表单数据,所以我想知道问题是我是否以错误的方式访问数据...
PS警报仅fd返回[object FormData]
我们正在尝试使用jQuery ajax和预先签名的URL将文件上传到S3.我们在服务器上生成预先指定的URL.目前我们正在尝试使用FormData上传文件.
var uploadData = new FormData(),
files = $(this.input).prop('files'),
file = files[0];
uploadData.append('file', file);
$.ajax({
url: '{presigned url string}',
type: 'PUT',
data: uploadData,
cache: false,
processData: false,
contentType: false,
success: function(response) {
console.log('S3 upload success!');
},
error: function(response) {
console.log('Error with S3 upload: ' + response.statusText);
}
});
Run Code Online (Sandbox Code Playgroud)
这将从AWS返回SignatureDoesNotMatch错误:
<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we
calculated does not match the signature you provided. Check your key and
signing method.</Message><StringToSignBytes>50 55 54 0a 0a 6d 75 6c 74 69 70 …Run Code Online (Sandbox Code Playgroud) 当我向后端发送一个整数时,我将它作为字符串接收,我不知道为什么?
var formdata = new FormData();
for (var i = 0; i < scope.user.values.length; i++) {
formdata.append('values[]', scope.user.values[i]);
}
Run Code Online (Sandbox Code Playgroud)
我以字符串形式接收值,而它们应该是整数
在角度5我通过我的服务从mongodb获取hotelgallery的图像.所以基本上我得到的数据是这样的
{
fieldname: "hotelgallery",
originalname: "e.jpg",
encoding: "7bit",
mimetype: "image/jpeg",
destination: "./public/",
encoding : "7bit",
filename : "1521139307413.jpg"
mimetype : "image/jpeg"
path : "public/1521139307413.jpg"
size : 66474
}
{
fieldname: "hotelgallery",
originalname: "e.jpg",
encoding: "7bit",
mimetype: "image/jpeg",
destination: "./public/",
encoding : "7bit",
filename : "1521139307413.jpg"
mimetype : "image/jpeg"
path : "public/1521139307413.jpg"
size : 66474
}
{
fieldname: "hotelgallery",
originalname: "j.jpg",
encoding: "7bit",
mimetype: "image/jpeg",
destination: "./public/",
encoding : "7bit",
filename : "1526753678390.jpg"
mimetype : "image/jpeg"
path : "public/1526753678390.jpg"
size : …Run Code Online (Sandbox Code Playgroud) 我想部分更新一组数据和一个图像文件。我的图像已更新,但其他数据未更新。这是我的代码示例:
updateUsersData() {
const { gender, phone, address, cityId, image, signature } = this.state;
const fd = new FormData();
fd.append('image', image, image.name);
fd.append('gender', gender);
fd.append('phone', phone);
fd.append('address', address);
fd.append('cityId', cityId);
fd.append('signature', signature);
fd.append('_method', 'PATCH');
API.patch(`users/${this.props.id}`,
fd
)
.then(res => {
})
.catch(err => console.log(err))
}
Run Code Online (Sandbox Code Playgroud) form-data ×10
javascript ×6
ajax ×4
jquery ×3
amazon-s3 ×1
angular ×1
angularjs ×1
axios ×1
file-upload ×1
html5 ×1
java ×1
jmeter ×1
mime-types ×1
php ×1
pojo ×1
reactjs ×1
rest ×1
resttemplate ×1
servlets ×1
spring ×1