gpt4 book ai didi

java - 从 Java 填写 Google 表单

转载 作者:行者123 更新时间:2023-11-30 05:19:46 25 4
gpt4 key购买 nike

我需要从我的 Java 代码填写基本的 Google 表单,但它抛出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;
}

这是表格:

enter image description here

我做错了什么?

最佳答案

您可以使用我的宠物项目来为您完成这项工作:

  1. 添加依赖项:

    <dependency>
    <groupId>io.github.stepio.jgforms</groupId>
    <artifactId>jgforms</artifactId>
    <version>1.0.1</version>
    </dependency>
  2. 定义您的表单:

    public enum MyForm implements MetaData {

    USER_NAME(1301726507L),
    MESSAGE(1466759457L);

    private long id;

    JGForm(long id) {
    this.id = id;
    }

    @Override
    public long getId() {
    return this.id;
    }
    }
  3. 填写表格并提交:

    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;
    }

查看自述文件和单元测试以获取更多详细信息和示例:

https://github.com/stepio/jgforms

关于java - 从 Java 填写 Google 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59753981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com