2012-06-01 27 views
0

我得到了一块code from the internet。该代码连接到HTTPS and displays the server response。但代码是旧的,并且不起作用。有人可以帮助我修改代码,以便它能正常工作。连接到HTTPS网址并发布到它

这是我可以在互联网上找到的最好的资源。我找不到任何其他。

import java.io.*; 
import java.net.*; 
import java.security.Security.*; 
import com.sun.net.ssl.*; 
import com.sun.*; 
public class Main { 
     public static void main(String[] args){ 
     String cuki=new String(); 
try { 
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol"); 
java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); 
URL url = new URL("https://www.sunpage.com.sg/sso/login.asp"); 
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); 
connection.setDoInput(true); 
connection.setDoOutput(true); 

connection.setRequestMethod("POST"); 
connection.setFollowRedirects(true); 


String query = "UserID=" + URLEncoder.encode("[email protected]"); 
query += "&"; 
query += "password=" + URLEncoder.encode("password"); 
query += "&"; 
query += "UserChk=" + URLEncoder.encode("Bidder"); 
// This particular website I was working with, required that the referrel URL should be from this URL 
// as specified the previousURL. If you do not have such requirement you may omit it. 
query += "&"; 
query += "PreviousURL=" + URLEncoder.encode("https://www.sunpage.com.sg/sso/login.asp"); 


//connection.setRequestProperty("Accept-Language","it"); 
//connection.setRequestProperty("Accept", "application/cfm, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, ///"); 
//connection.setRequestProperty("Accept-Encoding","gzip"); 


connection.setRequestProperty("Content-length",String.valueOf (query.length())); 
connection.setRequestProperty("Content-Type","application/x-www- form-urlencoded"); 
connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)"); 


// open up the output stream of the connection 
DataOutputStream output = new DataOutputStream(connection.getOutputStream()); 


// write out the data 
int queryLength = query.length(); 
output.writeBytes(query); 
//output.close(); 


System.out.println("Resp Code:"+connection.getResponseCode()); 
System.out.println("Resp Message:"+ connection.getResponseMessage()); 


// get ready to read the response from the cgi script 
DataInputStream input = new DataInputStream(connection.getInputStream()); 


// read in each character until end-of-stream is detected 
for(int c = input.read(); c != -1; c = input.read()) 
    System.out.print((char)c); 
input.close(); 
} 
catch(Exception e) 
{ 
System.out.println("Something bad just happened."); 
System.out.println(e); 
e.printStackTrace(); 
} 
} 
} 
+3

哪一部分无法正常工作?如果有例外,你能向我们展示堆栈跟踪吗? – MadcoreTom

+0

互联网上唯一演示如何建立https连接的代码不起作用?嗯.... –

+0

我从来没有使用核心Java HttpClient库。如果你可以使用其他库,Apache基金会有很多项目都有HttpClient实现。例如。 http://hc.apache.org/httpcomponents-client-ga/httpcomponents-client-ga/httpclient/examples/org/apache/http/examples/client/ClientCustomSSL.java – rsan

回答

1

尝试了这一点:

public void postData() throws Exception { 


HttpClient client = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("https://www.xyz.com"); 

List<NameValuePair> list = new ArrayList<NameValuePair>(1); 

list.add(new BasicNameValuePair("name","ABC"); 

httppost.setEntity(new UrlEncodedFormEntity(list)); 

HttpResponse r = client.execute(httppost); 

} 
+0

我在'\t httppost.setEntity(new UrlEncodedFormEntity(list))获得NULLPOINTER异常; '我该如何解决这个问题? –

+0

试着看看你的“httppost”是你的HttpPost的对象引用变量是否被初始化.......... –