The server committed an HTTP protocol violation

Discussion in 'ASP.NET 2.0' started by joelnet, Oct 5, 2006.

  1. I'm trying to convert an java object to c# object, this file transfer information in secure mode using HTTPS. The conversion was succesfully but when i run it the program im'm obtain the next error: 'The server committed an HTTP protocol violation' and i don't understand why. Thanks for your help...

    The code in java:
    public synchronized short performTransaction()
    throws FileNotFoundException
    {
    short result = -1;
    String protocol = '';
    debugMsg = new StringBuffer('---------- ' + String.valueOf(new Timestamp(System.currentTimeMillis())) + ' ----------');
    if (ssl)
    System.setProperty('java.protocol.handler.pkgs', 'com.sun.net.ssl.internal.www.protocol');
    try
    {
    if (webAddress.length() <= 0)
    {
    error = 'No webAddres specified.';
    return -1;
    }
    if (ssl)
    protocol = 'https://';
    else
    protocol = 'http://';
    String servletname = new String();
    if (context.length() > 0)
    {
    if (!context.startsWith('/'))
    servletname = servletname + '/';
    servletname = servletname + context;
    if (!context.endsWith('/'))
    servletname = servletname + '/';
    }
    else
    {
    servletname = servletname + '/';
    }
    servletname = servletname + 'servlet/TranPortalXMLServlet';
    URL u;
    if (port.length() > 0)
    u = new URL(protocol + webAddress + ':' + port + servletname);
    else
    u = new URL(protocol + webAddress + servletname);
    debugMsg.append('\nAbout to create http connection');
    URLConnection c;
    if (ssl)
    c = (HttpsURLConnection)u.openConnection();
    else
    c = u.openConnection();
    debugMsg.append('\nCreated connection');
    c.setDoInput(true);
    c.setDoOutput(true);
    c.setUseCaches(false);
    c.setRequestProperty('Content-Type', 'application/xml');
    String request = buildRequestString();
    debugMsg.append('\nREQUEST: ' + request);
    System.out.println();
    System.out.println('Data Sent = ' + u + '?' + request);
    if (request.length() > 0)
    {
    debugMsg.append('\nabout to write DataOutputSteam');
    DataOutputStream dos = new DataOutputStream(c.getOutputStream());
    debugMsg.append('\nafter DataOutputStream');
    dos.writeBytes(request);
    dos.flush();
    dos.close();
    BufferedReader dis = new BufferedReader(new InputStreamReader(c.getInputStream()));
    result = parseResults(dis);
    }
    else
    {
    error = 'No Data To Post!';
    throw new NotEnoughDataException(error);
    }
    }
    catch (Exception e)
    {
    clearResults();
    error = 'Failed to make connection:\n' + e;
    result = -1;
    }
    return result;
    }
    The code in C#


    public virtual short performTransaction()
    {
    short result = -1;
    String protocol = '';
    TimeSpan tiempo = new TimeSpan(TimeSpan.TicksPerMillisecond);
    debugMsg = new StringBuilder('---------- ' + tiempo.ToString() + ' ----------');
    try
    {
    if (webAddress.Length <= 0)
    {
    error = 'WebAddress was not specified.';
    return -1;
    }
    if (ssl)
    protocol = 'https://';
    else
    protocol = 'http://';
    string servletname = string.Empty;
    if (context.Length > 0)
    {
    if (!context.StartsWith('/'))
    {
    servletname = servletname + '/';
    }
    servletname = servletname + context;
    if (!context.EndsWith('/'))
    servletname = servletname + '/';
    }
    else
    {
    servletname = servletname + '/';
    }
    servletname = servletname + 'servlet/TranPortalXMLServlet';

    string url;
    if (port.Length > 0)
    {
    url = protocol + webAddress + ':' + port + servletname;
    }
    else
    {
    url = protocol + webAddress + servletname;
    }
    debugMsg.Append('\nAbout to create http Connection');
    HttpWebRequest request;
    WebResponse response;
    //WebResponse response;
    if (ssl)
    {
    request = WebRequest.Create(url) as HttpWebRequest;

    }
    else
    {
    request = WebRequest.Create(url) as HttpWebRequest;
    }
    response = request.GetResponse();
    debugMsg.Append('\nCreated connection');
    request.ContentType = REQUEST_CONTENT_TYPE;
    string solicitud = buildRequestString();
    byte[] byteArray = Encoding.UTF8.GetBytes(solicitud);

    debugMsg.Append('\nREQUEST: ' + solicitud);
    Console.WriteLine('Data Sent = ' + url + '?' + solicitud);
    if (solicitud.Length > 0)
    {
    debugMsg.Append('\nAbout to write DataStream');
    Stream dataStream = response.GetResponseStream();
    debugMsg.Append('\nafter DataOutputStream');
    dataStream.Write(byteArray, 0, byteArray.Length);
    dataStream.Flush();
    dataStream.Close();
    StreamReader readStream = new StreamReader(response.GetResponseStream());
    result = parseResults(readStream);

    }
    else
    {
    error = 'No Data To Post!';
    throw new FileNotFoundException(error);
    }
    }
    catch(Exception e)
    {
    clearResults();
    error = 'Failed to make connection:\n' + e.Message;
    result = -1;
    }

    return result;
    }
     

Share This Page