クッキー...のHttp POSTが正常に動作しない、なぜ?
-
19-09-2019 - |
質問
おそらくこれは、多くの場合、問題ですが、私はそれを解決することはできません。 私はautomaticalllyサーバから与えられたWebフォーム、上のいくつかのフィールドに記入する必要があります。 I)は、より簡単に私の人生を作るためにはApacheのHttpClientを使用します 今では、一つは目的をacheiveに私の手順を検討することができます:
-
1.私は、私はこのソフトウェアをダウンロードし、ローカルにインストールし、フィニッシュで、私はNewTicketを作成する必要がありますhttp://trac.edgewall.org/する証明書を持っていない。
-
2. Iは、局所的に、任意のSSL(SSLトンネル)なしのTracを使用します。 (これは、HTTPSを使用できるように私のプログラムを変更することは困難ではありません)。
-
3.今では、私が認証し、実行GETリクエストを、私は
-
例えば4:私はます。http:// localhostを:8000 / tracenvir / newticketする 。
この(〜/ newticket)ページには、次のようになります。
http://s04.radikal.ru/i177/0912/cb/d43971cebc02。 PNGする
そして、応答として、私は持っている:(その一部)
-
"入力タイプ=" テキスト "ID = "フィールド要約" NAME = "field_summary" サイズ= "70""
- "テキストエリアID =" フィールド記述 "NAME = "field_description" クラス= "wikiテキスト" 行= "10" COLS = "68"/ TEXTAREA"」
- 5。だから、私はこれを書きます:
int status = 0;
int cookLength=0;
Cookie[] cookies = null;
HttpClient client = new HttpClient();
client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
HttpState initialState = new HttpState();
client.setState(initialState);
//**********//
//**Log in**//
//**********//
GetMethod login = new GetMethod("http://localhost:8000/tracenvir/login");
client.getState().setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials("rauch", "qwert"));
login.setDoAuthentication(true);
System.setProperty("javax.net.ssl.trustStore", "/home/rauch/NetBeansProjects/jssecacerts");
try {
status = client.executeMethod(login);
System.out.println("response code = "+status);
cookies = client.getState().getCookies();
cookLength = cookies.length;
for(int i=0;i (less than) cookLength;i++) {
System.out.println(cookies[i].toString());
}
login.releaseConnection();
} catch(IOException ex) {
ex.printStackTrace();
}
//*********************//
//**Create New Ticket**//
//*********************//
PostMethod post = new PostMethod("http://localhost:8000/tracenvir/newticket");
NameValuePair[] data = {
new NameValuePair("field-summary","second error"),
new NameValuePair("field-descryption","Some stupid descryption..."),
new NameValuePair("field-type","defect"),
new NameValuePair("field-priority","major"),
new NameValuePair("field-version","1.0"),
new NameValuePair("field-owner","moscow server"),
new NameValuePair("submit","create ticket"),
};
//post.setRequestBody(data);
post.addParameters(data);
post.addRequestHeader("Referer","http://localhost:8000/tracenvir/login");
for(int i=0;i (less than) cookLength;i++) {
initialState.addCookie(cookies[i]);
}
client.setState(initialState);
try {
status = client.executeMethod(post);
System.out.println("response code = "+status);
byte[] buf = new byte[10];
int r=0;
BufferedInputStream is = new BufferedInputStream(post.getResponseBodyAsStream());
while((r = is.read(buf)) > 0) {
System.out.write(buf, 0, r);
}
post.releaseConnection();
} catch(IOException ex) {
ex.printStackTrace();
}
}
そして、私はこれを持っています:
-
400エラー:不正な要求
-
欠落または無効な形式トークン。あなたが有効にクッキーを持っていますか?
何が問題なのですか?
- GETリクエストの応答として、私はこれを取得します:
- 応答コード= 200
trac_auth = 38144ec2830678183afebf0b14c51721
-
trac_form_token = e9648f17987551b8f97e1953
おそらく私はこれを変更NEDD
- client.getParams()setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY)。
解決
http://www.google.com /support/toolbar/bin/answer.py?hl=en&answer=47972する
私は、上記のリンクは、このトピックでのuを助けると思います。その提供のビデオも..私はあなたのクエリが解決されることを願っています。
http://www.formautofill.com/する
このサイトには、あなたの自動フォームフィラーを提供するソフトウェアを提供します。 Microsoftが提供ます。
他のヒント
[OK]をクリックします。この下のリンクは、POSTメソッドについてです。私はそれをuを助けるかもしれないと思う。
のhttp:/ /www.willmaster.com/library/manage-forms/automatic-form-submission-to-a-cgi-program.phpする
私に返事を与えます。そうでない場合ます。
所属していません StackOverflow