00001 package net.threebit.utils.sosc ;
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 import java.io.BufferedReader;
00022 import java.io.PrintWriter;
00023 import java.io.BufferedWriter;
00024 import java.io.OutputStreamWriter;
00025 import java.io.InputStreamReader;
00026 import java.util.logging.Logger;
00027 import java.util.logging.FileHandler;
00028 import java.util.logging.SimpleFormatter;
00029 import java.net.*;
00030 import java.util.*;
00031 import javax.net.ssl.SSLSocketFactory;
00032 import javax.net.ssl.SSLSocket;
00033
00048 public abstract class AbstractPost {
00049
00051 private int httpversion = 1;
00053 private String server = "";
00055 private String script = "";
00057 private boolean debug = false;
00058
00062 public AbstractPost (javax.servlet.jsp.JspWriter out, String server, String script ){
00063 this.server = server;
00064 this.script = script;
00065 }
00066
00067 public AbstractPost ( String server, String script ) throws Exception {
00068 this.server = server;
00069 this.script = script;
00070 debug = true ;
00071 }
00072
00073 public AbstractPost ( String server, String script, int httpversion ) throws Exception {
00074 this.httpversion = httpversion;
00075 this.server = server;
00076 this.script = script;
00077 debug = true ;
00078 }
00079
00080
00081
00082
00083
00084
00085
00086
00087
00091 protected void setServer( String server ) {
00092 this.server = server ;
00093 }
00094
00098 protected void setScript( String script ) {
00099 this.script = script ;
00100 }
00101
00112 protected Map executeRequest (Map input) throws Exception {
00113 System.out.println ( "IN THE POST" ) ;
00114 System.out.println ( server ) ;
00115 Map map = encode ( input ) ;
00116
00117
00118 SSLSocketFactory sf = (SSLSocketFactory)SSLSocketFactory.getDefault();
00119 SSLSocket s = (SSLSocket)sf.createSocket(server, 443);
00120
00121
00122 PrintWriter o = new PrintWriter(
00123 new BufferedWriter(
00124 new OutputStreamWriter(
00125 s.getOutputStream())));
00126
00127
00128 o.println("POST "+script+" HTTP/1."+httpversion);
00129 o.println("Content-Type: application/x-www-form-urlencoded");
00130 o.println("User-Agent: threebit");
00131 o.println("Host: "+server);
00132 o.println("Connection: close");
00133
00134
00135 String body = new String();
00136 for (Iterator i = map.keySet().iterator(); i.hasNext() ; ) {
00137 try {
00138 String key = (String) i.next();
00139
00140
00141 if(debug)System.out.print ( "key = " + key + "\t\t\t" );
00142 Object obj = map.get(key);
00143
00144 if (obj instanceof String) {
00145 String value = (String) obj;
00146 if(debug)System.out.println ( "value = "+ value );
00147 body += URLEncoder.encode(key,"UTF-8")
00148 + "=" + URLEncoder.encode(value,"UTF-8") + "&";
00149 }
00150
00151
00152 else if (obj instanceof String[] ){
00153 String[] values = (String[]) obj;
00154 if(debug) System.out.println ( "value = "+ values[0] );
00155 body += URLEncoder.encode(key,"UTF-8")
00156 + "=" + URLEncoder.encode(values[0],"UTF-8") + "&";
00157 }
00158 }
00159 catch ( Exception e ) {
00160
00161 e.printStackTrace(System.out);
00162 }
00163 }
00164
00165
00166
00167 o.println("Content-Length: "+body.length());
00168 o.println();
00169
00170
00171 o.print(body);
00172 o.flush();
00173
00174
00175 BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
00176
00177
00178 Map decoded = decode ( in ) ;
00179
00180
00181 decoded.putAll ( input ) ;
00182
00183
00184 s.close();
00185 in.close();
00186
00187
00188 return decoded;
00189 }
00190
00196 protected abstract Map encode ( Map unencoded ) throws Exception ;
00197
00205 protected abstract Map decode ( BufferedReader in ) throws Exception;
00206
00210 private void setLogger ( String log ) {
00211 try {
00212
00213
00214
00215
00216
00217 }
00218 catch ( Exception e ) {
00219
00220 e.printStackTrace( System.out ) ;
00221 }
00222 }
00223 }