2013-04-01 14 views
0

我正在尋找某種方式/代碼來了解如何訪問URL,將字符串粘貼/鍵入這些文本框並點擊登錄按鈕。要發佈到HTML/PHP表單的Java代碼

<center><label>Username: </label><input type="text" name="username"/></center> 
<center><label>Password: </label><input type="password" name="password"/><br/></center> 
<center><input type="submit" value=" Login "/><br /></center> 
</form> 

我對此很新,所以如果你能解釋,請做。

+1

[Selenium](http://docs.seleniumhq.org/)? –

+0

@ bmorris591:這看起來很有趣,很有前途,謝謝!我喜歡這個網站的另一個原因。 –

回答

0

You can use HttpComponents to do thisHere's a sample on the website for doing a basic post

/* 
* ==================================================================== 
* Licensed to the Apache Software Foundation (ASF) under one 
* or more contributor license agreements. See the NOTICE file 
* distributed with this work for additional information 
* regarding copyright ownership. The ASF licenses this file 
* to you under the Apache License, Version 2.0 (the 
* "License"); you may not use this file except in compliance 
* with the License. You may obtain a copy of the License at 
* 
* http://www.apache.org/licenses/LICENSE-2.0 
* 
* Unless required by applicable law or agreed to in writing, 
* software distributed under the License is distributed on an 
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
* KIND, either express or implied. See the License for the 
* specific language governing permissions and limitations 
* under the License. 
* ==================================================================== 
* 
* This software consists of voluntary contributions made by many 
* individuals on behalf of the Apache Software Foundation. For more 
* information on the Apache Software Foundation, please see 
* <http://www.apache.org/>. 
* 
*/ 

package org.apache.http.examples; 

import java.io.ByteArrayInputStream; 
import java.net.Socket; 

import org.apache.http.ConnectionReuseStrategy; 
import org.apache.http.HttpEntity; 
import org.apache.http.HttpHost; 
import org.apache.http.HttpRequestInterceptor; 
import org.apache.http.HttpResponse; 
import org.apache.http.HttpVersion; 
import org.apache.http.entity.ByteArrayEntity; 
import org.apache.http.entity.InputStreamEntity; 
import org.apache.http.entity.StringEntity; 
import org.apache.http.impl.DefaultConnectionReuseStrategy; 
import org.apache.http.impl.DefaultHttpClientConnection; 
import org.apache.http.message.BasicHttpEntityEnclosingRequest; 
import org.apache.http.params.HttpParams; 
import org.apache.http.params.HttpProtocolParams; 
import org.apache.http.params.SyncBasicHttpParams; 
import org.apache.http.protocol.HttpContext; 
import org.apache.http.protocol.BasicHttpContext; 
import org.apache.http.protocol.ExecutionContext; 
import org.apache.http.protocol.HttpProcessor; 
import org.apache.http.protocol.HttpRequestExecutor; 
import org.apache.http.protocol.ImmutableHttpProcessor; 
import org.apache.http.protocol.RequestConnControl; 
import org.apache.http.protocol.RequestContent; 
import org.apache.http.protocol.RequestExpectContinue; 
import org.apache.http.protocol.RequestTargetHost; 
import org.apache.http.protocol.RequestUserAgent; 
import org.apache.http.util.EntityUtils; 

/** 
* Elemental example for executing multiple POST requests sequentially. 
* <p> 
* Please note the purpose of this application is demonstrate the usage of HttpCore APIs. 
* It is NOT intended to demonstrate the most efficient way of building an HTTP client. 
*/ 
public class ElementalHttpPost { 

    public static void main(String[] args) throws Exception { 

     HttpParams params = new SyncBasicHttpParams(); 
     HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); 
     HttpProtocolParams.setContentCharset(params, "UTF-8"); 
     HttpProtocolParams.setUserAgent(params, "Test/1.1"); 
     HttpProtocolParams.setUseExpectContinue(params, true); 

     HttpProcessor httpproc = new ImmutableHttpProcessor(new HttpRequestInterceptor[] { 
       // Required protocol interceptors 
       new RequestContent(), 
       new RequestTargetHost(), 
       // Recommended protocol interceptors 
       new RequestConnControl(), 
       new RequestUserAgent(), 
       new RequestExpectContinue()}); 

     HttpRequestExecutor httpexecutor = new HttpRequestExecutor(); 

     HttpContext context = new BasicHttpContext(null); 

     HttpHost host = new HttpHost("localhost", 8080); 

     DefaultHttpClientConnection conn = new DefaultHttpClientConnection(); 
     ConnectionReuseStrategy connStrategy = new DefaultConnectionReuseStrategy(); 

     context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn); 
     context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, host); 

     try { 

      HttpEntity[] requestBodies = { 
        new StringEntity(
          "This is the first test request", "UTF-8"), 
        new ByteArrayEntity(
          "This is the second test request".getBytes("UTF-8")), 
        new InputStreamEntity(
          new ByteArrayInputStream(
            "This is the third test request (will be chunked)" 
            .getBytes("UTF-8")), -1) 
      }; 

      for (int i = 0; i < requestBodies.length; i++) { 
       if (!conn.isOpen()) { 
        Socket socket = new Socket(host.getHostName(), host.getPort()); 
        conn.bind(socket, params); 
       } 
       BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", 
         "/servlets-examples/servlet/RequestInfoExample"); 
       request.setEntity(requestBodies[i]); 
       System.out.println(">> Request URI: " + request.getRequestLine().getUri()); 

       request.setParams(params); 
       httpexecutor.preProcess(request, httpproc, context); 
       HttpResponse response = httpexecutor.execute(request, conn, context); 
       response.setParams(params); 
       httpexecutor.postProcess(response, httpproc, context); 

       System.out.println("<< Response: " + response.getStatusLine()); 
       System.out.println(EntityUtils.toString(response.getEntity())); 
       System.out.println("=============="); 
       if (!connStrategy.keepAlive(response, context)) { 
        conn.close(); 
       } else { 
        System.out.println("Connection kept alive..."); 
       } 
      } 
     } finally { 
      conn.close(); 
     } 
    } 

}