문제

아마도 이것은 종종 문제이지만 해결할 수는 없습니다. 서버에서 제공되는 웹 양식의 일부 필드를 자동으로 작성해야합니다. 나는 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

위의 링크 가이 주제에 도움이 될 것이라고 생각합니다. 비디오도 제공합니다 .. 쿼리가 해결되기를 바랍니다.

http://www.formautofill.com/

이 사이트는 자동 형태의 필러를 제공하는 소프트웨어를 제공합니다. Microsoft가 제공합니다.

다른 팁

확인. 아래 링크는 게시물에 관한 것입니다. 나는 그것이 당신에게 도움이 될 것이라고 생각합니다.

http://www.willmaster.com/library/manage-forms/automatic-form-submission-to-a-cgi-program.php

답장을주세요. 그렇지 않은 경우.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top