来自Java的Google表单填充
我需要从Java代码中填写基本的Google表单,但它会抛出来自Java的Google表单填充,java,google-forms,autofill,Java,Google Forms,Autofill,我需要从Java代码中填写基本的Google表单,但它会抛出org.apache.http.client.ClientProtocolException:意外响应状态:405 这是我的密码: private boolean sendMessage(UserInfo userInfo) { final HttpPost req = new HttpPost("my-form-url"); try (CloseableHttpClient httpclient = HttpClien
org.apache.http.client.ClientProtocolException:意外响应状态:405
这是我的密码:
private boolean sendMessage(UserInfo userInfo) {
final HttpPost req = new HttpPost("my-form-url");
try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
List<NameValuePair> form = new ArrayList<>();
form.add(new BasicNameValuePair("entry.1301726507", userInfo.getName()));
form.add(new BasicNameValuePair("entry.1466759457", "hello"));
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(form, Consts.UTF_8);
req.setEntity(entity);
System.out.println("Executing request " + req.getRequestLine());
ResponseHandler<String> responseHandler = response -> {
int status = response.getStatusLine().getStatusCode();
if (status >= 200 && status < 300) {
HttpEntity responseEntity = response.getEntity();
return responseEntity != null ? EntityUtils.toString(responseEntity) : null;
} else {
throw new ClientProtocolException("Unexpected response status: " + status);
}
};
String responseBody = httpclient.execute(req, responseHandler);
System.out.println("----------------------------------------");
System.out.println(responseBody);
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
private boolean sendMessage(UserInfo UserInfo){
最终HttpPost请求=新HttpPost(“我的表单url”);
try(CloseableHttpClient-httpclient=HttpClients.createDefault()){
列表形式=新建ArrayList();
add(新的BasicNameValuePair(“entry.1301726507”,userInfo.getName());
添加(新的BasicNameValuePair(“条目14667597Hello”);
UrlEncodedFormEntity实体=新的UrlEncodedFormEntity(表单,Consts.UTF_8);
请求设置实体(实体);
System.out.println(“正在执行请求”+req.getRequestLine());
ResponseHandler ResponseHandler=响应->{
int status=response.getStatusLine().getStatusCode();
如果(状态>=200&&status<300){
HttpEntity responseEntity=response.getEntity();
return responseEntity!=null?EntityUtils.toString(responseEntity):null;
}否则{
抛出新的ClientProtocolException(“意外响应状态:+状态”);
}
};
字符串responseBody=httpclient.execute(req,responseHandler);
System.out.println(“--------------------------------------------------------”;
系统输出打印LN(响应库);
返回true;
}捕获(IOE异常){
e、 printStackTrace();
返回false;
}
以下是表格:
我做错了什么?您可以使用我的宠物项目为您完成这项工作:
<dependency>
<groupId>io.github.stepio.jgforms</groupId>
<artifactId>jgforms</artifactId>
<version>1.0.1</version>
</dependency>
private boolean sendMessage(UserInfo userInfo) {
URL url = Builder.formKey("my-form-key-from-url")
.put(MyForm.USER_NAME, userInfo.getName())
.put(MyForm.MESSAGE, "hello")
.toUrl();
Submitter submitter = new Submitter(
new Configuration()
);
try {
submitter.submitForm(url);
} catch (NotSubmittedException ex) {
// TODO: log & handle the exception properly
return false;
}
return true;
}
可能此表单未定义Post?这是错误代码的状态。
private boolean sendMessage(UserInfo userInfo) {
URL url = Builder.formKey("my-form-key-from-url")
.put(MyForm.USER_NAME, userInfo.getName())
.put(MyForm.MESSAGE, "hello")
.toUrl();
Submitter submitter = new Submitter(
new Configuration()
);
try {
submitter.submitForm(url);
} catch (NotSubmittedException ex) {
// TODO: log & handle the exception properly
return false;
}
return true;
}