Archived Forum Post

Index of archived forum posts

Question:

Unable to send the stream using CkHttpRequest

Mar 31 '15 at 07:19

Hello,

We are trying to send contents of a file to server using request parameter. For this, we used the following code:

httpRequest.put_HttpVerb("POST");
httpRequest.put_ContentType("multipart/form-data");
httpRequest.put_Path("Sample/" + servlet);
httpResponse = chilkatEngine.SynchronousRequest("http://192.168.1.51", 8443, false, httpRequest);
String paramFilePath = "full/path/for/file.txt";
boolean success = httpRequest.AddFileForUpload("paremeterName", paramFilePath);

From the server side, when we read the data, we are unable to read the input stream. We are able to get other parameters from headers. Just the stream is missing. Requests are sent with POST method.

Here is the log from client:

 ChilkatLog:
   SynchronousRequest:
     DllDate: Dec  5 2014
     ChilkatVersion: 9.5.0.46
     UnlockPrefix: *********
     Username: ******:******
     Architecture: Little Endian; 32-bit
     Language: Windows Java
     VerboseLogging: 0
     domain: http://192.168.1.55
     port: 8443
     ssl: 0
     httpRequest:
       httpVersion: 1.1
       verb: POST
       path: /Sample/SampleServlet
       contentType: multipart/form-data
       charset: windows-1252
       sendCharset: 0
       mimeHeader: SampleID: 1
SessionID: a62db668d42f54999c906931d4545b612d74c8392c282475-255510029
UserName: user1
       requestParams:
         requestItem:
           name: paremeterName
           fileOnDisk: "full/path/for/file.txt"
           numValueBytes: 43
         --requestItem
         requestItem:
           name: SessionID
           value: a62db668d42f54999c906931d4545b612d74c8392c282475-255510029
         --requestItem
         requestItem:
           name: SampleID
           value: 1
         --requestItem
       --requestParams
     --httpRequest
     readTimeout: 20
     connectTimeout: 10
     approxRequestSize: 363
     fullRequest:
       a_synchronousRequest:
         generateRequest:
           httpRequestGenStartLine:
             genStartLine:
               startLine: POST /Sample/SampleServlet HTTP/1.1
             --genStartLine
           --httpRequestGenStartLine
           addCookies:
             Not auto-adding cookies.
           --addCookies
           genMultipartFormData:
             requestParam:
               name: SampleServletParameters
               filename: 
full/path/for/file.txt
             --requestParam
             requestParam:
               name: SessionID
             --requestParam
             requestParam:
               name: SampleID
             --requestParam
           --genMultipartFormData
         --generateRequest
         fullHttpRequest:
           domain: 192.168.1.55
           port: 8443
           ssl: 0
           openHttpConnection:
             Opening connection directly to HTTP server.
             httpHostname: 192.168.1.55
             httpPort: 8443
             ssl: 0
             connectElapsedMs: 858
             HTTP connection succeeded.
           --openHttpConnection
           connectTime: Elapsed time: 858 millisec
           sendRequestHeader:
             sendHeaderElapsedMs: 0
           --sendRequestHeader
           sendRequestBody:
             genMultipartFormData:
               requestParam:
                 name: paremeterName
                 filename: full/path/for/file.txt
               --requestParam
               requestParam:
                 name: SessionID
               --requestParam
               requestParam:
                 name: SampleID
               --requestParam
             --genMultipartFormData
             sendBodyElapsedMs: 0
           --sendRequestBody
           statusCode: 200
           statusText: OK
           readResponseBody:
             Response is chunked.
           --readResponseBody
         --fullHttpRequest
         success: 1
       --a_synchronousRequest
       success: 1
     --fullRequest
     totalTime: Elapsed time: 11544 millisec
     Success.
   --SynchronousRequest
--ChilkatLog

ChilkatLog:
   PostUrlEncoded:
     DllDate: Dec  5 2014
     ChilkatVersion: 9.5.0.46
     UnlockPrefix: ********
     Username: *****:*****
     Architecture: Little Endian; 32-bit
     Language: Windows Java
     VerboseLogging: 0
     url: http://192.168.1.55:8443/Sample/SampleServlet
     httpRequest:
       httpVersion: 1.1
       verb: GET
       path: /Sample/SampleServlet
       contentType:
       charset: windows-1252
       sendCharset: 0
       mimeHeader: SessionID: 
a62db668d42f54999c906931d4545b612d74c8392c282475-255510029
SampleID: 1
       requestParams:
         requestItem:
           name: SessionID
           value: a62db668d42f54999c906931d4545b612d74c8392c282475-255510029
         --requestItem
         requestItem:
           name: SampleID
           value: 1
         --requestItem
       --requestParams
     --httpRequest
     fullRequest:
       a_synchronousRequest:
         generateRequest:
           httpRequestGenStartLine:
             genStartLine:
               startLine: POST /Sample/SampleServlet HTTP/1.1
             --genStartLine
           --httpRequestGenStartLine
           addCookies:
             Not auto-adding cookies.
           --addCookies
         --generateRequest
         fullHttpRequest:
           domain: 192.168.1.55
           port: 8443
           ssl: 0
           openHttpConnection:
             Using existing connection.
           --openHttpConnection
           connectTime: Elapsed time: 0 millisec
           sendRequestHeader:
             sendHeaderElapsedMs: 0
           --sendRequestHeader
           sendRequestBody:
             sendBodyElapsedMs: 0
           --sendRequestBody
           statusCode: 200
           statusText: OK
           readResponseBody:
             contentLength: 2173
           --readResponseBody
         --fullHttpRequest
         success: 1
       --a_synchronousRequest
       success: 1
     --fullRequest
     Success.
   --PostUrlEncoded
--ChilkatLog

I am sure, we are missing something. Appreciate your quick response.

Thanks,


Answer

I haven't used this object myself, nor code in the language you're using (C#?), but your code looks like it's adding the file to the upload after making the request to the server. Shouldn't you be adding the file before calling sending the request to the server (line 4 of your sample code)?

Dan