我想从我的Android应用程序向Spring Boot发送post请求。我使用okhttp以JSON格式发送HTTP post请求。代码如下:
每次我使用Android请求发送post请求时,我都会收到400个错误的请求参数“name”不存在,“path”:“/newcustomer”。但当我使用postman时,它可以工作。
Java
----------------------------------------------------------------
Log.d("okhttphandleruserreg", "called");
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
JSONObject jsonObject = new JSONObject();
try{
jsonObject.put("name", name);
jsonObject.put("email", email);
jsonObject.put("username", username);
jsonObject.put("password", password);
jsonObject.put("month", month);
jsonObject.put("dayOfMonth", dayOfMonth);
} catch (JSONException e) {
e.printStackTrace();
}
RequestBody body = RequestBody.create(JSON, jsonObject.toString());
Request.Builder builder = new Request.Builder();
builder.url(params[0]);
builder.post(body);
Request request = builder.build();
Spring Boot
-----------------------------------------------------------------
@RequestMapping(value = "/newcustomer", method= RequestMethod.POST)
public Customer newCust(@RequestParam(value="name") String name,
@RequestParam(value="email") String email,
@RequestParam(value="username") String username,
@RequestParam(value="password") String password,
@RequestParam(value="month") int month,
@RequestParam(value="dayOfMonth") int dayOfMonth
)
您在Spring Boot中使用Request Params,但在Android代码中,您将其作为请求正文发送。
请更改以上任何一项。如果在这两个地方都使用RequestBody,效果更好。
class Customer
{
String name:
String email:
String username;
String password;
int month;
int dayofthemonth;
//getter and setters
}
public Customer newCust(@RequestBody Customer newcustomer)
{
}
实现后端 /newcustomerAPI的方式表明,您希望请求有效负载是请求表单数据中的原始请求参数。
假设服务器端API是您的合约,因此应保持原样,您的客户端代码应更新如下:
Log.d("okhttphandleruserreg", "called");
// here you create your request body as as a Form one
RequestBody formBody = new FormBody.Builder()
.add("name", "test")
.add("email", "test@domain.com")
.add("username", "test")
.add("username", "test")
.add("month", "january")
.add("dayOfMonth", "1")
.build();
Request request = new Request.Builder()
.url(params[0])
.post(formBody)
.build();
// call your request
我无法通过邮递员提出请求,我检查了所有内容,我的电子邮件在我的数据库中表示为varchar(255)。我使用后格雷姆。错误:必需的字符串参数“电子邮件”不存在。我使用响应并像这样设置它:每个接收值的字符串参数,但这没有帮助,因为程序报告我们没有发送任何东西。这与什么有关?请求是正确的,以及接受的参数是正确的。 请求看起来像什么: 实体用户 接受的控制器: 回购: 添加日志
我尝试在Spring MVC中对我的控制器进行AJAX查询。 我的操作代码是: 我的Ajax查询是: 但我有个错误: 必需的字符串参数“start_date”不存在 为什么?正如我所知,我像一样呈现了它 和控制器操作: JSON数据如下:
我有一个无法更改的spring API,它的post listener如下所示: 现在,我有另一个Spring boot API,需要在构建时发送POST请求,POST请求如下所示: ObjectWrapper如下所示: 当执行上述post请求时,它会从我这边引发异常 org.springframework.web.client.HttpClientErrorException$BadReques
在从Tomcat 7.0.50升级到Tomcat 8.5.15期间,它停止识别我的一个方法的POST参数:我得到的不是正常的响应,而是以下消息 HTTP状态[400]-[错误请求] 类型状态报告 消息所需字符串参数'password'不存在 由于被认为是客户端错误(例如,格式错误的请求语法、无效的请求消息帧或欺骗性的请求路由),服务器无法或将不处理请求。 Apache Tomcat/8.5.15
所以,我知道这可能是一个非常愚蠢的问题,我是一个初学者,试图学习Java基础知识,我有一个字符串数组的问题,我不太明白。当我尝试将单词输入到字符串数组中,并且单词的数量由用户设置(例如5)时,我总是可以少输入一个单词(例如4而不是5)。我的代码在下面。