therealsowho:
私は私のJavaコードから基本的なGoogleのフォームを記入する必要があるが、それはスロー org.apache.http.client.ClientProtocolException: Unexpected response status: 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;
}
そして、ここでの形式は次のとおりです。
何が私が間違っているのでしょうか?
ステッパー:
あなたはあなたのための仕事をする私のペットのプロジェクトを使用することがあります。
依存関係を追加します。
<dependency> <groupId>io.github.stepio.jgforms</groupId> <artifactId>jgforms</artifactId> <version>1.0.1</version> </dependency>
あなたのフォームを定義します。
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; } }
フォームに記入し、提出します:
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; }
詳細および例については、READMEと単体テストを確認します。