쿠키… HTTP 게시물이 올바르게 작동하지 않습니까?
-
19-09-2019 - |
문제
아마도 이것은 종종 문제이지만 해결할 수는 없습니다. 서버에서 제공되는 웹 양식의 일부 필드를 자동으로 작성해야합니다. 나는 Apache httpclient를 사용하여 내 인생을 더 쉽게 만들 수있게합니다.) 지금까지 목표를 달성하기위한 내 단계를 고려할 수 있습니다.
- 1. http://trac.edgewall.org/에 인증서가 없으므로이 소프트웨어를 다운로드하고 로컬로 설치하면 NewTicket을 만들어야합니다.
- 2. SSL (SSL 터널)없이 TRAC를 로컬로 사용합니다. (HTTPS를 사용할 수 있도록 내 프로그램을 변경하는 것은 어렵지 않습니다).
- 3. 지금까지, 나는 인증 및 GET 요청을 수행 할 수 있지만, 사후 요청을 수행 할 수는 없습니다.
- 4. 예를 들어 : 나는 http : // localhost : 8000/tracenvir/newticket . 이 (~/newticket) 페이지는 다음과 같이 보입니다.http://s04.radikal.ru/i177/0912/cb/d43971cebc02.png그리고 응답으로 : (그것의 일부)
- "입력 유형 ="텍스트 "id ="Field-Summary "name ="Field_summary "size ="70 ""
- "TextArea id ="Field-description "name ="field_description "class ="wikitext "rows ="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
아마도 나는 이것을 변경했다 :
- client.getParams (). setCookEepolicy (cookiepolicy.browser_compatibility);
해결책
http://www.google.com/support/toolbar/bin/answer.py?hl=en&answer=47972
위의 링크 가이 주제에 도움이 될 것이라고 생각합니다. 비디오도 제공합니다 .. 쿼리가 해결되기를 바랍니다.
이 사이트는 자동 형태의 필러를 제공하는 소프트웨어를 제공합니다. Microsoft가 제공합니다.
다른 팁
확인. 아래 링크는 게시물에 관한 것입니다. 나는 그것이 당신에게 도움이 될 것이라고 생각합니다.
http://www.willmaster.com/library/manage-forms/automatic-form-submission-to-a-cgi-program.php
답장을주세요. 그렇지 않은 경우.
제휴하지 않습니다 StackOverflow