I'm afraid the Apache Soap project is archived and no longer actively maintained - the last release was in 2003. Instead you could look at recommending a switch to use one of the other actively maintained web service stacks at Apache such as Apache CXF (http://cxf.apache.org/) or Apache Axis.
Colm. On Tue, Jul 3, 2018 at 10:07 AM, Gaurav Goyal <gaurav.ga.go...@oracle.com> wrote: > > > Hi All, > > > > We are having one product in which we are using SOAP. > > Our customer does not want to use any HTTP/1.0 request so asking us to > upgrade to use HTTP/1.1. > > We did investigation and found that HTTP/1.0 is being hard coded in > soap.jar so we cannot really change this. > > > > Class : org.apache.soap.util.net.HTTPUtils.java > <http://svn.apache.org/repos/asf/webservices/archive/soap/branches/xml-soap-2_1/java/src/org/apache/soap/util/net/HTTPUtils.java> > > > > Code : > ------------------------------------------------------------------- > * public static TransportMessage post(URL url, TransportMessage * > *transportmessage, int i, String s, int j, int k, Boolean boolean1)* > * throws IllegalArgumentException, IOException, SOAPException* > * {* > * OutputStream outputstream = null;* > * InputStream inputstream = null;* > * Object obj = null;* > * int l;* > * Socket socket;* > * try* > * {* > * l = getPort(url);* > * socket = buildSocket(url, l, i, s, j, boolean1);* > * if(url.getProtocol().equalsIgnoreCase("HTTPS"))* > * s = null;* > * if(i > 0)* > * socket.setSoTimeout(i);* > * outputstream = socket.getOutputStream();* > * inputstream = socket.getInputStream();* > * }* > * catch(Exception exception)* > * {* > * Object obj1 = exception;* > * if(obj1 instanceof InvocationTargetException)* > * obj1 = * > *((InvocationTargetException)obj1).getTargetException();* > * throw new IllegalArgumentException("Error opening socket: " + > * > *obj1);* > * }* > * String s1 = s != null ? url.toString() : url.getFile();* > * if(s1.length() == 0)* > * s1 = "/";* > * StringBuffer stringbuffer = new StringBuffer();* > * stringbuffer.append("POST").append(' ').append(s1).append(" * > *HTTP/").append("1.0").append("\r\n").append("Host").**append(": * > > *").append(url.getHost()).append(':').append(l).append("\r\n").append("Content-* > *Type").append(": * > > *").append(transportmessage.getContentType()).append("\r\n").append("Content-Le* > *ngth").append(": * > *").append(transportmessage.getContentLength()).append("\r\n");* > * Object obj2;* > * for(Enumeration enumeration = transportmessage.getHeaderNames(); * > *enumeration.hasMoreElements(); stringbuffer.append(obj2).append(": * > *").append(transportmessage.getHeader((String)obj2)).append("\r\n"))* > * obj2 = enumeration.nextElement();* > > * stringbuffer.append("\r\n");* > * BufferedOutputStream bufferedoutputstream = new * > *BufferedOutputStream(outputstream, k);* > > > *bufferedoutputstream.write(stringbuffer.toString().getBytes("iso-8859-1"));* > * transportmessage.writeTo(bufferedoutputstream);* > * bufferedoutputstream.flush();* > * outputstream.flush();* > * BufferedInputStream bufferedinputstream = new * > *BufferedInputStream(inputstream);* > * boolean flag = false;* > * Object obj3 = null;* > * StringBuffer stringbuffer1 = new StringBuffer();* > * int j1 = 0;* > * do* > * {* > * if(j1 == 10 || j1 == -1)* > * break;* > * j1 = bufferedinputstream.read();* > * if(j1 != 10 && j1 != 13 && j1 != -1)* > * stringbuffer1.append((char)j1);* > * } while(true);* > * String s3 = stringbuffer1.toString();* > * try* > * {* > * StringTokenizer stringtokenizer = new StringTokenizer(s3);* > * stringtokenizer.nextToken();* > * int i1 = Integer.parseInt(stringtokenizer.nextToken());* > * StringBuffer stringbuffer2 = new StringBuffer();* > * do* > * {* > * if(!stringtokenizer.hasMoreTokens())* > * break;* > * stringbuffer2.append(stringtokenizer.nextToken());* > * if(stringtokenizer.hasMoreTokens())* > * stringbuffer2.append(" ");* > * } while(true);* > * String s2 = stringbuffer2.toString();* > * }* > * catch(Exception exception1)* > * {* > * throw new IllegalArgumentException("Error parsing HTTP status > * > *line \"" + s3 + "\": " + exception1);* > * }* > * ByteArrayDataSource bytearraydatasource = new * > *ByteArrayDataSource(bufferedinputstream, "iso-8859-1");* > * byte abyte0[] = bytearraydatasource.toByteArray();* > * Hashtable hashtable = new Hashtable();* > * int k1 = -1;* > * String s4 = null;* > * StringBuffer stringbuffer3 = new StringBuffer();* > * StringBuffer stringbuffer4 = new StringBuffer();* > * boolean flag1 = true;* > * int l1;* > * for(l1 = 0; l1 < abyte0.length; l1++)* > * {* > * if(abyte0[l1] == 10)* > * {* > * if(stringbuffer3.length() == 0)* > * break;* > * String s5 = stringbuffer3.toString();* > * int i2 = stringbuffer4.length();* > * if(i2 > 0 && stringbuffer4.charAt(i2 - 1) == ';')* > * stringbuffer4.deleteCharAt(i2 - 1);* > * String s6 = stringbuffer4.toString();* > * if(s5.equalsIgnoreCase("Content-Length"))* > * k1 = Integer.parseInt(s6);* > * else* > * if(s5.equalsIgnoreCase("Content-Type"))* > * s4 = s6;* > * else* > * hashtable.put(s5, s6);* > * stringbuffer3 = new StringBuffer();* > * stringbuffer4 = new StringBuffer();* > * flag1 = true;* > * continue;* > * }* > * if(abyte0[l1] == 13)* > * continue;* > * if(flag1)* > * {* > * if(abyte0[l1] == 58)* > * {* > * flag1 = false;* > * if(l1 != abyte0.length - 1 && abyte0[l1 + 1] == 32)* > * l1++;* > * } else* > * {* > * stringbuffer3.append((char)abyte0[l1]);* > * }* > * } else* > * {* > * stringbuffer4.append((char)abyte0[l1]);* > * }* > * }* > > * InputStream inputstream1 = bytearraydatasource.getInputStream();* > * inputstream1.skip(l1 + 1);* > * if(k1 < 0)* > * k1 = bytearraydatasource.getSize() - l1 - 1;* > * TransportMessage transportmessage1;* > * try* > * {* > * SOAPContext soapcontext = new SOAPContext();* > * transportmessage1 = new TransportMessage(inputstream1, k1, > s4, * > *soapcontext, hashtable);* > * transportmessage1.read();* > * }* > * catch(MessagingException messagingexception)* > * {* > * throw new IllegalArgumentException("Error parsing response: " > + * > *messagingexception);* > * }* > * bufferedoutputstream.close();* > * outputstream.close();* > * bufferedinputstream.close();* > * inputstream.close();* > * socket.close();* > * return transportmessage1;* > * }* > > ------------------------------------------------------------------- > > > Even I had verified the higher version 2.3.1 of soap release, still has > the same code. > > So can you raise a bug/SR for making this configurable or to use any other > solution. > > Or do we have some workaround solution already for this. > > > > Thanks. > > > > Regards. > > Gaurav > -- Colm O hEigeartaigh Talend Community Coder http://coders.talend.com