NAT type detection from a HTTP request

Hello there
I got two JAVA class : httpServer and httpClient. Running in two different machines. Server is listening to a HTTP port in one machine and on the other hand client is sending its machine IP from other PC to the server. But the client is behind a NAT. Now I can detect in my httpServer class that it is behind a NAT. I check the requesting IP and the IP send inside the packet payload. If they are different, I decide there is a NAT in between. But how can I know from such HTTP request-response what kind of NAT I am behind? This is important to know because with symmetric NAT
(http://en.wikipedia.org/wiki/Network_address_translation) , where the NAT binding also include the outgoing address as well, my application is having problem.
I have solution like STUN/TURN server implementation. But I would like to know the type of NAT my client is behind without any extra deployment such as STUN or TURN server.
Any suggestion to detect type of NAT without any extra deployment and merely from HTTP request-response JAVA APIs?
Mohammed Jubaer Arif.

Thanks
It seems you are asking me to configure the NAT, may be with some programming. Or may be I should run the server class on the NAT machine.
But my client and server classes will be all over the world. Thus I think it is not a practical solution to ask the NATs to assist me. The intelligence should be in my client and server messaging.
So I was wondering, is there any way out for me to get the NAT type with JAVA programming, in the server side once I get a request from the client side. But without any extra deployment.
But as you said �There's not much of NAT types.� :(
Mohammed Jubaer Arif

Similar Messages

  • Get a specific Http header field from an http request in a component

    Hello,
    In a custom component that I've created ( which extends ServiceHandler), I'd like to access a specific http header field from the http requests that this component receives.
    I assume this could be accessible through m_binder or m_service, but I didn't find any solution so far.
    Any Idea?
    Thanks in advance,
    Leo

    As it may help others, I answer what I figured out.
    Every details of the http request is put into the m_binder.
    So a specific field can be accessed with m_binder.getEnvironmentValue("My_data")
    You can also list all the available data as it is a standard properties set.

  • Capture data from a http request

    i am really new learning abap and i just playing around so i looking a way for capture data from a http request giving the request value and submit for respont something like :
    put the url "http://www.imdb.com/find?s=all&q=" in some way and way for the data to request by the user
    val = 'user_entry'
    result =(any_Function)http://www.imdb.com/find?s=all&q=val
    write / result.
    pd: sorry for my bad english

    Welcome to SDN.
    If you are saying that you want to read some request from the HTTP page,then you have to do it with BSP instead of ABAP.
    Check this link for BSP.
    /message/1688265#1688265 [original link is broken]
    Regards,
    Amit
    Reward all helpful replies.

  • Getting the Details from a HTTP Request using C#

    Hi,
    Suppose, a user submits a form with some details as Address, Phone Number etc.. to a Web Application. On the client side, I need to have a proxy to intercept this http request message being sent to the Server and get the details in it like Phone number and
    Address in this case and display them to user in a pop up box for confirming and if he clicks YES, then only I should forward the request to Web Server/Web Application. 
    If the user feels that the information shown to him is not correct he can Click NO and the request will not be sent to the Server. Anyone know how to use this in DOTNET WEB APPLICATIONS?
    I need to write code for the Proxy Part, I am not sure how to handle HTTP messages and from where to start with. Any help would be of great help.
    Thanks
    K.V.N.PAVAN

    http://forums.asp.net/
    Yu have many sections to choose from concerning Web based solutions.

  • How to construct a faces request from a http request?

    I wonder how FacesServlet.service determines whether it should be calling LifecycleImpl.execute in oppose to calling LifecycleImpl.render?
    Basically, I'm trying to construct a http request that would go through the decode method of my UIComponent. However, it seems that my request has always been treated as a non-faces request, where it goes to the render face directly.
    Does anyone know how do I need to construct my http request so that it'll be recgonized as a faces request?
    Anyone knows where i can download the source code for FacesServlet?
    thanks!

    Sorry, are you saying that FacesServlet ALWAYS call execute before render even if it's the first request?
    What I experienced is that for the first request, execute isn't called, and it goes directly to render.
    And if I use the html form submit on the 2nd request, it does go to execute, then render.
    However, if i construct another http request, it'll act like a first request, where it doesn't go through the execute, but striaght to render.
    This is what I set in web.xml:
    <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup> 1 </load-on-startup>
    </servlet>
    <!-- Faces Servlet Mapping -->
    <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    I call my jsp using http://server:8080/faces/my.jsp, and I'm using tomcat 5. Any help would be appreciated.

  • Reading the binary data from a http request received via socket connection.

    1. I require to extract the binary data out of a http multipart request,
    2. I have a server socket opened up, which can receive connections over tcp( and therefore http.)
    3. I will require to read the stream, find out the "request boundary identifier", and then extract the different "request body parts".
    4. From there i need to read all of the binary content and put it in a file.
    5. I did some implementation to his effect. but i see that the file that i had uploaded initially if its not a text file, gets corrupted.
    can you please let me know why is that happening, and a probable solution approach.
    please find below the class (with a main method) I have been using to expose a server socket.
    package self.services;
    import java.io.BufferedReader;
    import java.io.ByteArrayOutputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    public class FileServer {
         public static void main(String[] args) throws Exception {
              ServerSocket serverSocket = new ServerSocket(9999);
              String FOLDER_NAME = "uploaded_files";
              while(true) {     
                   try{
                        Socket socket = serverSocket.accept();
                        InputStream is = socket.getInputStream();
                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
                        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                        String currentLine;
                        int cnt = 0;
                        boolean postRequest = false;
                        String dataBoundary = null;
                        String fileName = null;
                        String yourName = null;
                        while((currentLine = reader.readLine()) != null) {
                             if(currentLine.contains("POST")) {
                                  postRequest = true;
                                  System.out.println("POST REQ AS EXPECTED VERY NICE");
                                  continue;
                             if(!postRequest) {
                                  System.out.println("NO POST REQ THIS BREAKING FLOW");
                                  break;
                             } else {
                                  if(currentLine.contains("Content-Type: multipart/form-data; boundary=")) {
                                       System.out.println("found a boundary value header");
                                       dataBoundary = currentLine.substring((currentLine.indexOf("boundary=") + "boundary=".length()), (currentLine.length() -1));
                                       System.out.println("boundary value = ".concat(dataBoundary));
                                       continue;
                                  if(dataBoundary != null && currentLine.contains(dataBoundary)) {
                                       cnt++;
                                  if(cnt == 1) {
                                       //move 3 lines
                                       if(currentLine.contains("Content-Disposition: form-data; name=\"yourName\"")){
                                            reader.readLine();//skip a line
                                       System.out.println("Your name = ".concat(yourName = reader.readLine()));
                                       continue;
                                  } else if(cnt == 2) {
                                       if(currentLine.contains("Content-Disposition: form-data; name=\"sentFile\"; filename=\"")){
                                            fileName = currentLine.substring(currentLine.indexOf("filename=") + "filename=".length() + 1, currentLine.length() - 1);
                                            System.out.println("File Name = ".concat(fileName));
                                            reader.readLine();//skip a line , this would depict a content type header
                                            reader.readLine();//skip a line, this would indicate a blank line to mark the start of data.
                                            continue;
                                       } else {
                                            // write the content to os
                                            if(currentLine != null && !currentLine.contains(dataBoundary)) {
                                                 baos.write(currentLine.concat("\r").getBytes());
                                  } else if( cnt == 3) {
                                       System.out.println(("cnt [" + cnt).concat( "], current line [").concat(currentLine).concat("]"));
                                       break;
                        if(fileName == null ||yourName == null) {
                             System.out.println("FileServer.main() dont bother about this" );
                        } else {
                             //send a response back
                             PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
                             pw.write(responseMessage(yourName, fileName));
                             pw.flush();
                             //close output stream
                             pw.close();
                             //handle the request bytearray.
                             FileOutputStream fos = new FileOutputStream(FOLDER_NAME + "/" + fileName);
                             fos.write(baos.toByteArray(), 0, baos.toByteArray().length - 1);
                             fos.close();
                        //close input stream
                        reader.close();
                        socket.close();
                        baos.close();
                   } catch(Exception ex) {
                        ex.printStackTrace();
         public static String responseMessage(String yourName, String fileName) {
              String response =
                   "<HTML>" .concat(
                   "<BODY>") .concat(
                   "<P>" ).concat(
                   "Mr. <FONT color=\"red\">") .concat( yourName).concat("</FONT>. Your file named <B>").concat( fileName).concat( "</B> successfully reached us." ).concat(
                   "</P>") .concat(
                   "</BODY>").concat(
                   "</HTML>");
              return response;
    }{code}
    Here is a sample html file which can be used to send multipart requests to the java service.
    <html>
         <body>
              <form action="http://localhost:9999" enctype="multipart/form-data" method="POST">
                   Enter name :<br/>
                   <input type="text" name="yourName"/>
                   Enter file :<br/>
                   <input type="file" name="sentFile"/>
                   <br/>
                   <input type="submit" value="Submit"/>
              </form>
         </body>
    </html>
    *Both the form elements are mandatory*
    *I hope my requirement is clear. Any help regarding this will be highly appreciated.*
    Regards.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

    MishraC wrote:
    1. I require to extract the binary data out of a http multipart request,
    2. I have a server socket opened up, which can receive connections over tcp( and therefore http.)
    3. I will require to read the stream, find out the "request boundary identifier", and then extract the different "request body parts".
    4. From there i need to read all of the binary content and put it in a file.
    5. I did some implementation to his effect. but
    i see that the file that i had uploaded initially if its not a text file, gets corrupted.
    can you please let me know why is that happening,Because you are using a Reader (which translates bytes to chars according to the charset encoding specified).
    and a probable solution approach. Use a BufferedInputStream.

  • How can I Retrieve special chars from a HTTP Request??

    Hi,
    I want to retrieve special chars from a request
    Chars like accents used in spanish languages or symbols?
    Is there any way to do it
    Thanks in advance
    Alejandro Arredondo

    This is my problem
    For example:
    This is my form:
    <form>
    <input type="text" name="test">
    </form>
    I do write a char on the text area. Something like "?" or "?"
    or some words with accents
    When I retrieve the value with
    String value = request.getParameter("test");
    and print it
    out.println("TEST= " + test);
    It prints another symbol that isn't the one I sent in my form.
    why?
    Thanks

  • Parsing the return value from a http request into a xml document?

    suppose a url "http;//abc.com/index.asp" that return a string like this:
    <?xml version="1.0" encoding="UTF-8" ?>
    - <bbsend>
    <title>xml testing</title>
    - <record>
    <sender>111111</sender>
    <date>2004-01-05 04:11:44</date>
    <message>yes!</message>
    </record>
    - <record>
    <sender>22222222</sender>
    <date>2004-01-14 01:06:31</date>
    <message>A</message>
    </record>
    </bbsend>
    how can i parsing this return value into a xml document???
    i try something like this:
    URL url = new URL("http://abc.com/index.asp");
    HttpURLConnection http = (HttpURLConnection)url.openConnection();
    DataInputStream in = new DataInputStream(http.getInputStream());               
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    document = builder.parse(in);
    System.out.println(document.getNodeValue());
    But fail , can anyone help

    do u mean get the xml content??
    i am doing a project with BBSend
    [email protected]

  • How to Record HTTP Requests and POST data

    Hai all..
    Can anyone help me to solve this issue..
    How to Record HTTP Requests and POST data by using java..
    regards
    Ranjith Nair

    You should read about TCP and splitting data stream into packets and learn how to understand packet header to assemble stream from packets.
    Actually there are few different stages:
    1. detect handshake to start new empty stream within your code;
    2. detect subsequent packets and assemble stream (there are counters within packet header and they will help).
    After creating start of TCP stream (usually 1KB is enough) you'll be able to detect is it HTTP request/header or no and start logging or ignoring packets for this connection.

  • NAT TYPE 3 on PS3 using BT HOME HUB

    Recently I have noticed that my NAT Type has changed from OPEN to STRICT on my PS3. This is causing problems when connecting to online games. Quite often I will not be able to connect to game, friends will not be able to connect to me if I am host and also I get signed off the PSN network randomly. This has only started happening recently.
    I have read about this on other threads and it appears to be a problem with the BT HOME HUB. I have the older white version (not sure what model type).
    Can anyone advise if BT intend to address this common problem with connecting to online games through a BT Home Hub?
    It would appear that obtaining  NAT Type 2 from NAT Type 3 can be quite a tricky process. Again I would be grateful if anyone has any advice on how to do this and whether ti is worth trying.
    If this issue is not resolved soon I may have to consider if I will renew my contract with BT as it would appear it is a recent upgrade to the BT Home Hub that has caused the problem.
    I did not have any major connection issues until recently.
    Thanks in advance for any advice.

    try this mate,it was for my old bt205 but when i got my first hub i had to use these settings also.oh and another 1 to look for is in your hub settings 192.168.1.254 then go in to advanced settings and look at your network ( have your xbox on ) your hub should list the things connected to it,now pick the xboxlive from the dropdown box and pair it up this should always give you open nat,if it goes strict again unplug router/hub power line for 2 mins then reboot and reboot your 360.
    http://bt.custhelp.com/cgi-bin/bt.cfg/php/enduser/​cci/bt_adp.php?p_sid=ACNLc8oi&cat_lvl1=346&cat_lvl​...

  • Switching between https and http requests

    Hi,
    Our application is built using ADF 10.1.3
    This application need to be integrated with an in house built single sign on system. ( SSO system is built in C# and .NET)
    This single sign on system only understand https request. Once user is validated against single sign on system, our application's authorization page is called in HTTPS mode. Once the user is authorized, he is forwarded to home page. While forwarding to home page, we want to convert the HTTPS request to HTTP.
    Currently once the user is authenticated, all requests are happening in HTTPS mode.
    We do not know how to make http request from existing https requested page.
    Any help is appreciated.
    Thanks
    Ranajit

    Hi,
    the way to do this is by redirecting the call from a PhaseListener or command button. The solution Avrom refers to is a PhaseListener that uses XML configuration file to determine whether or not the page you are navigating to requires https or http. The code that handles the protocol switch is printed below
      * Determines if the requested page requires SSL and if the current protocol
      * meets this need. If not the protocol is switched between http and https
      * @param viewId
      * @param pageRequiresSSL
      public void handleProtocolSwitch(String viewId, boolean pageRequiresSSL)
        ExternalContext exctx = FacesContext.getCurrentInstance().getExternalContext();
        boolean isSecureSSLChannel = ((HttpServletRequest)exctx.getRequest()).isSecure();
        // pages that require SSL and SSL is on, or pages that don't require
        // SSL but SSL is on and should be kept
        if (pageRequiresSSL && isSecureSSLChannel || !pageRequiresSSL && isSecureSSLChannel && isKeepSSLMode) {
        printDebugMessage("Page requires SSL = "+pageRequiresSSL+", channel is secure = "+isSecureSSLChannel+", is keep SSL = "+isKeepSSLMode);
        printDebugMessage("No protocol change required");
        // page requires SSL and SSL is not active. Switch to SSL.
        if (pageRequiresSSL && !isSecureSSLChannel) {
          printDebugMessage("Page requires SSL = "+pageRequiresSSL+", channel is secure = "+isSecureSSLChannel);
          printDebugMessage("Protocol change required to use https");
          switchToHttps(viewId);
        // switch to HTTP is page doesn't require SSL and channel isn't secure
        // and isKeepSSLMode is false
        if (!pageRequiresSSL && !isKeepSSLMode && isSecureSSLChannel) {
          printDebugMessage("Page requires SSL = "+pageRequiresSSL+", channel is secure = "+isSecureSSLChannel+", is keep SSL = "+isKeepSSLMode);
          printDebugMessage("Protocol change required to use http");
          switchToHttp(viewId);
        if (!pageRequiresSSL && !isSecureSSLChannel) {
          printDebugMessage("Page requires SSL = "+pageRequiresSSL+", channel is secure = "+isSecureSSLChannel);
          printDebugMessage("No protocol change required");
      * Switches from https to http using a redirect call
      * @param viewId
      private void switchToHttp(String viewId) {
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext exctx = facesContext.getExternalContext();
          ViewHandler vh = facesContext.getApplication().getViewHandler();
          String pageURI = vh.getActionURL(FacesContext.getCurrentInstance(), viewId);
          //redirect to http URL
          String remoteHost = getHostNameFromRequest();
          printDebugMessage("Switch to http on host "+ remoteHost);
          try {
              String port = httpPort.equalsIgnoreCase("80") ? "" : ":" + httpPort;
              String url = "http://" + remoteHost + port + pageURI;
              printDebugMessage("Redirecting to http URL "+ url); 
              //TODO check request Map
               this.printDebugMessage(" Content size of RequestMap before redirect "+exctx.getRequestMap().size());
              exctx.redirect(url);         
          } catch (IOException e) {
              printDebugMessage("Redirect to http port failed "+ e.getMessage());
      * switches to https using a redirect call
      * @param viewId
      private void switchToHttps(String viewId) {
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ExternalContext exctx = facesContext.getExternalContext();
          ViewHandler vh = facesContext.getApplication().getViewHandler();
          String pageURI = vh.getActionURL(FacesContext.getCurrentInstance(), viewId);
          //redirect to https URL
          String remoteHost = getHostNameFromRequest();
          printDebugMessage("Switch to SLL/https on host "+ remoteHost);
          try {
              String port = httpsPort.equalsIgnoreCase("443") ? "" : ":" + httpsPort;
              String url = "https://" + remoteHost + port + pageURI;
              printDebugMessage("Redirecting to https URL "+ url);       
              //TODO check request Map
              this.printDebugMessage(" Content of RequestMap before redirect "+exctx.getRequestMap().size());
              exctx.redirect(url);         
          } catch (Exception e) {
              printDebugMessage("Redirect to http port failed "+ e.getMessage());
      * @return the hostname of the page request
      private String getHostNameFromRequest() {
          ExternalContext exctx = FacesContext.getCurrentInstance().getExternalContext();
          String requestUrlString = ((HttpServletRequest)exctx.getRequest()).getRequestURL().toString();
          URL requestUrl = null;
          try {
              requestUrl = new URL(requestUrlString);
          } catch (MalformedURLException e) {
              e.printStackTrace();
          String remoteHost = requestUrl.getHost();
          return remoteHost;
      }If your container doesn't support session sharing between http and https then the session is renewed. In OC4J you will have to configure this.
    Frank

  • Application Web Service Control Manager detected AWEBSVC is not responding to HTTP requests. The http status code and text is 400, Bad Request.

    Hi All,
    I am seeing the following error for SMS_AWEBSVC_CONTROL_MANAGER component with Message ID: 8100
    Application Web Service Control Manager detected AWEBSVC is not responding to HTTP requests.  The http status code and text is 400, Bad Request.
    awebsctl.log file has below errors:
    Call to HttpSendRequestSync failed for port 80 with status code 400, text: Bad Request
    SMS_AWEBSVC_CONTROL_MANAGER 12/22/2014 3:37:55 PM
    13920 (0x3660)
    AWEBSVCs http check returned hr=0, bFailed=1
    SMS_AWEBSVC_CONTROL_MANAGER 12/22/2014 3:37:55 PM
    13920 (0x3660)
    AWEBSVC's previous status was 1 (0 = Online, 1 = Failed, 4 = Undefined)
    SMS_AWEBSVC_CONTROL_MANAGER 12/22/2014 3:37:55 PM
    13920 (0x3660)
    Health check request failed, status code is 400, 'Bad Request'.
    SMS_AWEBSVC_CONTROL_MANAGER 12/22/2014 3:37:55 PM
    13920 (0x3660)
    Management point and Application Catalog Website Point are installed on the same Server where I am seeing the error for Application Catalog Web Service Point role. Management Point and Application Catalog Website Point are functioning properly. Application
    Catalog Website is working.
    Thanks & Regards, Kedar

    Hi Jason,
    Application Catalog Web Service Point and Application Catalog Website Point; both are installed as per below configuration on same Server:
    IIS Website: Default Web Site
    Port Number: 80
    with default value for Web Application Name configured.
    For SMS_AWEBSVC_CONTROL_MANAGER component, I am getting below error in Component Status:
    Application Web Service Control Manager detected AWEBSVC is not responding to HTTP requests.  The http status code and text is 400, Bad Request.
    Possible cause: Internet Information Services (IIS) isn't configured to listen on the ports over which AWEBSVC is configured to communicate. 
    Solution: Verify that the designated Web Site is configured to use the same ports which AWEBSVC is configured to use.
    Possible cause: The designated Web Site is disabled in IIS. 
    Solution: Verify that the designated Web Site is enabled, and functioning properly.
    For more information, refer to Microsoft Knowledge Base.
    And awebsctl.log has the below error lines:
    Call to HttpSendRequestSync failed for port 80 with status code 400, text: Bad Request
    SMS_AWEBSVC_CONTROL_MANAGER
    12/23/2014 11:04:36 AM 16388 (0x4004)
    AWEBSVCs http check returned hr=0, bFailed=1
    SMS_AWEBSVC_CONTROL_MANAGER
    12/23/2014 11:04:36 AM 16388 (0x4004)
    AWEBSVC's previous status was 1 (0 = Online, 1 = Failed, 4 = Undefined)
    SMS_AWEBSVC_CONTROL_MANAGER
    12/23/2014 11:04:36 AM 16388 (0x4004)
    Health check request failed, status code is 400, 'Bad Request'.
    SMS_AWEBSVC_CONTROL_MANAGER
    12/23/2014 11:04:36 AM 16388 (0x4004)
    STATMSG: ID=8100
    What should I check from IIS side?
    Application Catalog Website is functioning properly.
    Thanks & regards,
    Kedar
    Thanks & Regards, Kedar

  • Invalid request for HTTP request from Java

    I've written the following code to retrieve data from HTTP url:
    byte [] buffer = new byte[1024];
                   URLConnection conn = src.openConnection();
                   //conn.setRequestProperty("Range", "bytes=" + (start + completed) + "-" + end);
                   //System.out.println("bytes=" + (start + completed) + "-" + end);
                   System.out.println("Response: " + ((HttpURLConnection)conn).getResponseCode());
                   BufferedInputStream bin = new BufferedInputStream(conn.getInputStream());
                   byte [] data = new byte[1024];
                   int readLen;
                   manager.addConnected();
                   while((readLen = bin.read(data)) != -1 && canContinue) {
                        dest.seek(start+completed);
                        dest.write(data, 0, readLen);
                        completed += readLen;
                        System.out.println(readLen + "\t" + completed);
                   dest.close();
                   System.out.println("Read: " + readLen);
              } catch(IOException e) {
                   manager.failConnection();
              }However, the response code printed is -1 and the following content is written to the file (dest is a random access file, you can ignore the seek(), it is needed when I start multi-threading).
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
    <TITLE>ERROR: The requested URL could not be retrieved</TITLE>
    <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
    </HEAD><BODY>
    <H1>ERROR</H1>
    <H2>The requested URL could not be retrieved</H2>
    <HR noshade size="1px">
    <P>
    While trying to process the request:
    <PRE>
    GET /ubuntu/pool/main/f/firefox/firefox_2.0.0.2+0dfsg-0ubuntu0.6.10_i386.deb HTTP/1.1
    User-Agent: Java/1.6.0
    Host: security.ubuntu.com
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    Connection: keep-alive
    </PRE>
    <P>
    The following error was encountered:
    <UL>
    <LI>
    <STRONG>
    Invalid Request
    </STRONG>
    </UL>
    <P>
    Some aspect of the HTTP Request is invalid.  Possible problems:
    <UL>
    <LI>Missing or unknown request method
    <LI>Missing URL
    <LI>Missing HTTP Identifier (HTTP/1.0)
    <LI>Request is too large
    <LI>Content-Length missing for POST or PUT requests
    <LI>Illegal character in hostname; underscores are not allowed
    </UL>
    <P>Your cache administrator is <A HREF="mailto:root">root</A>.
    <BR clear="all">
    <HR noshade size="1px">
    <ADDRESS>
    Generated Fri, 16 Mar 2007 11:14:48 GMT by inet (squid/2.6.STABLE3)
    </ADDRESS>
    </BODY></HTML>Where does the problem lie? It failed for other URLs too. Can I establish more than one connection by invoking openURLConnection() on the same URL object?

    Ive run into this issue also. I need a way for a portlet to change to its maximized state for the purposes of user registration. Is there anyway this can be done? I know that sun jsp "Providers" which are shown on their example desktop, have some sort of maximized state that they can go into, but im not sure how to use this in a portlet.
    There seems to be very inconsistent support between the proprietary sun provider api, and the portlet api.

  • Error log on http request from business connector (BC)

    Hi all,
    We are sending http requests from our business connector to one client but the messages keep having log errors :
    server.log details :
    003C24  [B2BCORE.0064.0014] Opening Socket https://www.qab2b.xxx.com:443/invoke/wm.b2b.cxml:receiveCXML  proxy=10.28.38.27:80
    003C25  [B2BCORE.0038.0002] --> CONNECT www.qab2b.xxx.com:443 HTTP/1.0
    003C26  [B2BCORE.0038.0002] --> User-Agent: Mozilla/4.0 [en] (WinNT; I)
    003C27  [B2BCORE.0038.0002] --> Accept: image/gif, /
    003C28  [B2BCORE.0038.0002] --> Host: www.qab2b.xxx.com:443
    003C29  [B2BCORE.0038.0002] --> Proxy-Authorization: Basic YWJ1c2luZXNzY29ubmVjdG9yOmFidXNpbjA0
    003C2A  [B2BCORE.0038.0002] --> Authorization: Basic U0ZSQ2VnZXRlbDoyMDA3KkVBSV9TRlI=
    003C2B  [B2BCORE.0038.0002] > Content-type: multipart/mixed; boundary="--=_Part_0_1941981.1219399983635"
    003C2C  [B2BCORE.0038.0002] --> Message-ID: <7159395.1219399983666.JavaMail.SYSTEM@sw0030>
    003C2D  [B2BCORE.0038.0002] --> Mime-Version: 1.0
    003C2E  [B2BCORE.0040.0001] HTTP/1.1 200
    003C2F  [B2BCORE.0064.0017] Proxy Header <--Connection established
    003C30  [B2BCORE.0038.0002] --> POST /invoke/wm.b2b.cxml:receiveCXML HTTP/1.0
    003C31  [B2BCORE.0038.0002] --> User-Agent: Mozilla/4.0 [en] (WinNT; I)
    003C32  [B2BCORE.0038.0002] --> Accept: image/gif, /
    003C33  [B2BCORE.0038.0002] --> Host: www.qab2b.xxx.com:443
    003C34  [B2BCORE.0038.0002] --> Proxy-Authorization: Basic YWJ1c2luZXNzY29ubmVjdG9yOmFidXNpbjA0
    003C35  [B2BCORE.0038.0002] --> Authorization: Basic U0ZSQ2VnZXRlbDoyMDA3KkVBSV9TRlI=
    003C36  [B2BCORE.0038.0002] > Content-type: multipart/mixed; boundary="--=_Part_0_1941981.1219399983635"
    003C37  [B2BCORE.0038.0002] --> Message-ID: <7159395.1219399983666.JavaMail.SYSTEM@sw0030>
    003C38  [B2BCORE.0038.0002] --> Mime-Version: 1.0
    003C39  [B2BCORE.0038.0002] --> Content-Length: 188225
    003C3A  [B2BCORE.0040.0001] HTTP/1.0 200
    003C3B  [B2BCORE.0041.0001] ssnid=86087kPxFCsECcmXU5DHUAInKY9mEIIU-9355222; path=/;
    003C3C  [B2BCORE.0038.0002] <-- Set-Cookie: ssnid=86087kPxFCsECcmXU5DHUAInKY9mEIIU-9355222; path=/;
    003C3D  [B2BCORE.0038.0002] <-- Content-Type: multipart/mixed; boundary="----=_Part_0_1941981.1219399983635"
    003C3E  [B2BCORE.0038.0002] <-- Connection: Close
    003C3F  [B2BCORE.0038.0002] <-- Content-Length: 0
    003C40  [B2BCORE.0049.0008] Sequence : index=8 depth=3
    003C41  [B2BCORE.0049.0008] Sequence : index=6 depth=2
    003C42  [B2BCORE.0049.0008] Sequence : index=1 depth=3
    003C43  [B2BCORE.0049.0005] Invoke : index=1 depth=4
    003C44  [B2BCORE.0049.0008] Sequence : index=2 depth=3
    003C45  [B2BCORE.0049.0005] Invoke : index=1 depth=4
    003C46  [B2BCORE.0049.0008] Sequence : index=3 depth=3
    003C47  [B2BCORE.0049.0005] Invoke : index=1 depth=4
    003C48  [B2BSERV.0048.9999] Array index out of range: -1
    003C49  [B2BCORE.0049.0008] Sequence : index=4 depth=3
    003C4A  [B2BCORE.0050.0004] Copy failed: (Simple) No source data available: to=/returnedStatusCode(0), from=/returnHttp(0)/cXML(0)/Response(0)/Status(0)/@code(0)
    003C4B  [B2BCORE.0050.0004] Copy failed: (Simple) No source data available: to=/returnedMessage(0), from=/returnHttp(0)/cXML(0)/Response(0)/Status(0)/*body(0)
    003C4C  [B2BCORE.0050.0004] Copy failed: (Simple) No source data available: to=/returnedText(0), from=/returnHttp(0)/cXML(0)/Response(0)/Status(0)/@text(0)
    003C4D  [B2BCORE.0049.0008] Sequence : index=5 depth=3
    003C4E  [B2BCORE.0049.0008] Sequence : index=6 depth=3
    003C4F  [B2BCORE.0049.0008] Sequence : index=7 depth=2
    003C50  [B2BCORE.0049.0008] Sequence : index=2 depth=1
    003C51  [B2BSERV.0056.0003] Unable to send mail. Illegal address
    error java log on server>logs>error:
    2008-08-22 12:16:33 CEST java.lang.ArrayIndexOutOfBoundsException: Array index out of range: -1
         at com.wm.util.List.elementAt(List.java:101)
         at com.wm.lang.xml.token.BlockInputBuffer.getChar(BlockInputBuffer.java:59)
         at com.wm.lang.xml.TextNode.appendSqueezedText(TextNode.java:178)
         at com.wm.lang.xml.ElementNode.appendSqueezedText(ElementNode.java:333)
         at com.wm.lang.xml.ElementNode.getTextOfChildren(ElementNode.java:309)
         at com.wm.lang.xml.Document.getTextOfChildren(Document.java:542)
         at com.wm.app.b2b.services.DocumentToRecordService.recursiveCollect(DocumentToRecordService.java:661)
         at com.wm.app.b2b.services.DocumentToRecordService.bind(DocumentToRecordService.java:356)
         at pub.web.documentToRecord(web.java:667)
         at java.lang.reflect.Method.invoke(Native Method)
         at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:281)
         at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:693)
         at com.wm.app.b2b.server.BaseService.invoke(BaseService.java:140)
         at com.wm.lang.flow.FlowInvoke.invoke(FlowInvoke.java:292)
         at com.wm.lang.flow.FlowState.invokeNode(FlowState.java:559)
         at com.wm.lang.flow.FlowState.step(FlowState.java:430)
         at com.wm.lang.flow.FlowState.invoke(FlowState.java:400)
         at com.wm.app.b2b.server.FlowSvcImpl.baseInvoke(FlowSvcImpl.java:1786)
         at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:693)
         at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:455)
         at com.wm.app.b2b.server.Service.doInvoke(Service.java:495)
         at com.wm.app.b2b.server.Service.doInvoke(Service.java:392)
         at wm.PartnerMgr.gateway.transport.B2B.OutboundProcess(B2B.java:157)
         at java.lang.reflect.Method.invoke(Native Method)
         at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:281)
         at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:693)
         at com.wm.app.b2b.server.BaseService.invoke(BaseService.java:140)
         at com.wm.lang.flow.FlowInvoke.invoke(FlowInvoke.java:292)
         at com.wm.lang.flow.FlowState.invokeNode(FlowState.java:559)
         at com.wm.lang.flow.FlowState.step(FlowState.java:430)
         at com.wm.lang.flow.FlowState.invoke(FlowState.java:400)
         at com.wm.app.b2b.server.FlowSvcImpl.baseInvoke(FlowSvcImpl.java:1786)
         at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:693)
         at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:455)
         at com.wm.app.b2b.server.Service.doInvoke(Service.java:495)
         at com.wm.app.b2b.server.Service.doInvoke(Service.java:464)
         at wm.PartnerMgr.gateway.runtime.InboundProcess(runtime.java:423)
         at pub.sap.transport.RFC.InboundProcess(RFC.java:190)
         at java.lang.reflect.Method.invoke(Native Method)
         at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:281)
         at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:693)
         at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:455)
         at com.wm.app.b2b.server.Service.doInvoke(Service.java:495)
         at com.wm.app.b2b.server.Service.doInvoke(Service.java:464)
         at com.wm.pkg.sap.rfc.Listener.handleRequest(Listener.java:286)
         at com.sap.mw.jco.JCO$Server.dispatchRequest(JCO.java:6022)
         at com.sap.mw.idoc.jco.JCoIDoc$Server.dispatchRequest(JCoIDoc.java:10120)
         at com.wm.pkg.sap.rfc.Listener.dispatchRequest(Listener.java:186)
         at com.sap.mw.jco.rfc.MiddlewareRFC$Server.nativeListen(Native Method)
         at com.sap.mw.jco.rfc.MiddlewareRFC$Server.listen(MiddlewareRFC.java:1070)
         at com.sap.mw.jco.JCO$Server.listen(JCO.java:5797)
         at com.sap.mw.jco.JCO$Server.run(JCO.java:5731)
         at com.wm.pkg.sap.rfc.Listener.run(Listener.java:101)
         at java.lang.Thread.run(Thread.java:479)
    Thanks for your support on this eai.
    Regards,
    Laurent.

    ok, I think we do not need the save/loadPipeline things, because you can debug the flow without that. I first thought you act as HTTP server, but you issue the client call in the flow itself.
    Looking at the logs more carefully, it shows for example:
    Copy failed: (Simple) No source data available: to=/returnedStatusCode(0), from=/returnHttp(0)/cXML(0)/Response(0)/Status(0)/@code(0)
    But you say have that input:
    <?xml version="1.0"?>
    <!DOCTYPE cXML SYSTEM "http://xml.cXML.org/schemas/cXML/1.2.011/cXML.dtd">
    <cXML version="1.2.011" payloadID="20080825171850716.18637uTQ9ExzheaK+H6b7O9oCAQWPzHA-9355222.8b3632def70da7220004d0b6" timestamp="2008-08-25T17:18:50-CEST">
    <Response>
    <Status code="500">No cXML document received from sender.</Status>
    </Response>
    </cXML>
    So we see that your mappings assumptions do not match the result structure.
    The other problem is that you get a status 500 and do not receive a cXML document, but that might be ok, depending on what parameters you pass to the other HTTP server. At least, you get a meaningful error message back from the server, meaning communication is ok.
    I suggest you first correct those "copy failed" issues and then check by single-stepping where exactly the flow fails and check that input again.
    By the way, when I feed the above cXML into recordToDocument, it works fine. Did you specify other input parameters besides "node" (e.g. recordName) ? And again, are you on Core Fix 8 ?
    CSY

  • Passing Cookies from Previous Web HTTP Request to the Next

    Hi,
    I have two Web Http Requests. The first one performs a Login and the second one executes another method called ListRecoveryPlans.
    First SOAP calls for Login looks like this:
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap-url>https://srm-app-003:9007</soap-url>
    <connection>
    <name>srm_connection_test_01</name>
    <terminate-on-exit>false</terminate-on-exit>
    </connection>
    <SOAP-ENV:Body>
    <urn:SrmLogin xmlns:urn="urn:srm0">
    <urn:_this xmlns:urn="urn" type="SrmApi">Srm</urn:_this>
    <urn:username>cisco\xxx</urn:username>
    <urn:password>xxx</urn:password>
    </urn:SrmLogin>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    The second soap looks like this:
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap-url>https://srm-app-003:9007</soap-url>
    <connection>
    <name>srm_connection_test_01</name>
    <terminate-on-exit>false</terminate-on-exit>
    </connection>
    <connectionCookie>
    <name>
    <xsl:text disable-output-escaping="no">DE78D964-DDF4-40B6-BCB7-BEB44624826D</xsl:text>
    </name>
    </connectionCookie>
    <SOAP-ENV:Body>
    <urn:ListRecoveryPlans xmlns:urn="urn:srm0">
    <urn:_this xmlns:urn="urn" type="SrmApi">
    <xsl:text disable-output-escaping="no">Srm</xsl:text>
    </urn:_this>
    </urn:ListRecoveryPlans>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    In addition, under the Cookies tab for the ListRecoveryPlans request, I passed the cookies from the previous request:
    However, I am getting a "session is not authenticated" error.
    The remote server returned an error: (500) Internal Server Error.
    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
    <soapenv:Fault><faultcode>ServerFaultCode</faultcode><faultstring>The session is not authenticated.</faultstring><detail><SecurityErrorFault xmlns="urn:srm0" xsi:type="SecurityError"></SecurityErrorFault></detail></soapenv:Fault>
    </soapenv:Body>
    </soapenv:Envelope>
    Can you shed some light on how I can fix this issue? I am using CPO v. 2.2.0.1409.
    Thank you.
    Regards,
    Mary Jane Cofino

    Hi,
    Thank you for the prompt reply.
    For the first request, here is the response header I am getting
    I checked the "Accept cookies from this request" checkbox button and am now getting a new error:
    The remote server returned an error: (500) Internal Server Error.
    <?xml version="1.0" encoding="UTF-8"?>
    http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    ServerFaultCodeThe object has already been deleted or has not been completely created
    Regards,
    Mary Jane Cofino

Maybe you are looking for

  • My iphone 5s is not recognized by itunes on my new Macbook Air.

    I just bought a Macbook Air.  I previously owned a Macbook Pro.  I am attempting to transfer all of my photos and music to my new Air.  Photos were no problem, music was a breeze using Home Sharing.  However, my iphone 5s is not recognized by itunes

  • Logic is not quitting

    I just updated my operating system to 10.6.8 and installed pro tools 9 - now logic is not quitting or closing. Everything else in logic seems to work ok.

  • Wow, is there any way to report this kind of BS?

    http://itunes.apple.com/nz/app/night-vision-007/id402721327?mt=8 By all accounts a crappy app with crappy reviews and then the vendor makes "minor update" - AKA "hiding the old version reviews" and then suddenly gets loads of great reviews, all on th

  • MAGNIFYER WORKS ONLY IN LOW POWER AND 250% POWER BUT NOT IN ANY OTHER % POWER, ,WHY

    Fire fox magnifier works only in 100% and 250% power but can not select 125, or 150% power, or any other % power, why?

  • WF error - ROLLBACK WORK executed

    I m trying to implement workflow template WS20000077 for overall release of requisitions. When i test the workflow my workitems are under status ERROR. The error log gives the following message - ROLLBACK WORK executed (SWP_CALLBACK_WI_DONE item 8) R