我正试图通过React前端向Spring后端发送一个API请求。当我发送请求时,我收到以下错误:
Could not resolve parameter [0] in private org.springframework.http.ResponseEntity com.example.bottlecap.controllers.BottlecapController.entryForm(com.example.bottlecap.domian.Bottlecap,org.springframework.web.multipart.MultipartFile): Content type 'application/octet-stream' not supported
然而,当我使用邮递员设置请求时,它会顺利通过。我想在React端如何设置FormData可能会有问题。然而,我几乎没有运气弄明白这一点。
我的API应该接收一个对象,该对象包含关于我提交的数据以及与提交相关的图像。在我的Postman请求中,我创建了一个表单数据,其中包含一个JSON文件,该文件包含所有对象数据和一个随机图像,仅用于测试。正如我所说的,这个需求很好。然而,在前端代码中,我将对象数据解析为Json,并将其添加到FormData以及将图像添加到FormData。
这是我的Spring控制器:
@RequestMapping(path ="/bottlecap/entry", method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE, MediaType.APPLICATION_OCTET_STREAM_VALUE})
private ResponseEntity entryForm(@RequestPart("cap") Bottlecap cap, @RequestPart("file") MultipartFile image){
System.out.println(cap);
cap.toString();
System.out.println("Test");
return ResponseEntity.ok().build();
}
这是我的反应前端表单提交处理程序:
handleSubmit = event =>{
console.log(this.state.page);
console.log(this.state.page);
event.preventDefault();
const cap ={
"name":this.state.name,
"brand":this.state.brand,
"yearMade":parseInt(this.state.yearMade),
"country": this.state.country,
"description":this.state.description,
"yearFound":parseInt(this.state.yearFound),
"isAlcoholic":"true"
};
const stringCap = JSON.stringify({cap});
console.log(cap);
var formData = new FormData();
formData.append('cap', JSON.parse(stringCap));
formData.append('file',this.state.imageFile)
axios.post('http://localhost:8080/bottlecap/entry', formData, {headers:{'Content-Type':'multipart/form-data'}})
.then(res=>{
console.log(res);
console.log(res.data);
//window.location = "/success"
this.setState({pageDone:true})
this.setState({pageLoading:true})
})
}
这是我的邮递员请求的截图,如果可能的话。
这里还有我在Postman上发送的json文件的内容,如果它也有帮助的话。
{"name":"post-test",
"brand":"post-test",
"yearMade":1000,
"country":"post-test",
"description":"post-test",
"yearFound":1000,
"isAlcoholic":"true"}
我做的最后一个更改是向axios API请求添加一个头,但仍然没有成功。
在postman中,对于名为cap的参数,您将发送一个。json文件。但在reactjs代码中,您正在
formData.append('cap', JSON.parse(stringCap));
JSON. parse将创建一个javascript对象,这不是您的后端所期望的。您需要将其作为JSON文件发送。
没有测试,但这可能会给你一个想法。
const json = JSON.stringify(cap);
const blob = new Blob([json], {
type: 'application/json'
});
var formData = new FormData();
formData.append('cap', blob);
formData.append('file', this.state.imageFile)
axios.post('http://localhost:8080/bottlecap/entry', formData, {headers:{'Content-Type':'multipart/form-data'}})
.then(res=>{
console.log(res.data);
}
我正在处理一个API的一部分,它需要调用另一个外部API来检索它的一个函数的数据。调用返回HTTP 500错误,描述为“不支持内容类型‘应用程序/八位字节流’。”该调用应返回“application/json”类型。" 我发现这是因为接收到的响应没有在其头中显式指定内容类型,即使其内容的格式为JSON,所以我的API默认假定它是一个八位字节流。 问题是,我不知道如何适应这种情况。即使另一个API没
我试图发送POST请求。虽然通过POSTMAN发送一切顺利,然后我尝试通过C#代码发送: 我得到了这个错误: 请求包含实体正文,但没有Content-Type标头。此资源不支持推断的媒体类型应用程序/八位流 我怎样才能解决它?
问题内容: 我有一个烧瓶应用程序,具有以下视图: 但是,这仅在请求的内容类型设置为时才有效,否则dict 为None。 我知道请求主体为字符串,但我不想每次客户端忘记设置请求的内容类型时都将其解析为字典。 有没有办法假设每个传入请求的content- type是?我想要的就是始终访问有效的字典,即使客户端忘记将应用程序的内容类型设置为json。 问题答案: 使用并设置为: 从文档中: 默认情况下,
我有一个第三方服务,它用文件向我的Django应用程序发出POST请求。要成功上传到Django应用程序,请求必须具有“多部分/表单数据”内容类型,但在我的案例和请求中,内容类型是“八位流”。文件总是空的。我怎么能在Django中接收八位流内容类型的文件?
我在InteliJ/Java/RestAssured中收到一个400错误的POST请求,但在Postman中没有,所以谁能告诉我哪里出错了,请先告诉Postman 我的身体参数是 现在,当我发布这篇文章时,我得到了200条回复和一个不错的新访问令牌。当我在Java/RestAssured中尝试同样的方法时,我得到一个400错误的请求错误,这就是我发布的内容。 身体 每次运行这个程序,我都会收到HT
问题内容: 我想在我的Web服务中添加一个选项来处理不受支持的URL,我应该提到我正在使用Express。为了处理错误的网址(代码404),我尝试使用 但是显然它已被弃用,我还可以使用其他什么解决方案?我看到了建议的解决方案,但我想先听听其他选择。 另外, 我的Web服务支持一些HTTP请求类型,例如GET和POST,如何正确响应不支持的请求类型?例如DELETE。 我想要的行为是在发生404错误