Forum Discussion

abirHajali's avatar
abirHajali
Occasional Contributor
4 years ago

ReadyAPI is not reading a json file

I have a post request in which i attach two files, the first one must be a json file.

Using postman, the api works fine but using soap ui it seems like it's not reading the right format.

How is it possible ?

 

 

  • Khouloud's avatar
    Khouloud
    4 years ago

    Hello abirHajali,

    Your Content-type in both parts are not well sended

    Instead of Content-Type: application/json; name=***.json you should send Content-Type: application/json;

    My advice is to modify your request and correct Content-type, the way to do it is to use Event handlers (Filtering requests)

    Use: RequestFilter.filterRequest to modify request before sending, this script aim to retreive and enter the correct Content-type

    def bodyPartAttach = context.getProperty("httpMethod").requestEntity.message.content.getBodyPart(0) // get a part by number, it starts with 0
    bodyPartAttach.removeHeader("Content-Type")
    bodyPartAttach.addHeader("Content-Type", "application/json")

     

    Do the same with the second part (index = 1)

     

     

     

     

     

  • richie's avatar
    richie
    Community Hero
    Hey abirHajali,

    I have this a lot where the request works fine in postman, but doesnt in readyapi! or soapui. You gotta remember postman doesnt include all the functionality that soapui and readyapi! include to allow the user to tailor their requests....thats why i think this occurs so much.

    What i do in this situation is i use Fiddler to proxy the requests. Fiddler is a tool that extracts all the RAW content from any tool that uses it as a proxy and allows you to compare the difference between what soapui sends and what postman sends. This then allows you to make the appropriate changes in soapui to get it to work.

    Ta

    Rich
    • abirHajali's avatar
      abirHajali
      Occasional Contributor

      Update :

       

      Hello richie ,

      Thanks for the recommandatipn. Fiddler is a great tool.

      But still couldn't find the right solution, can you tell the diffrence please :

       

      ReadyAPI request (we upgraded)

      POST ****** HTTP/1.1
      Accept-Encoding: gzip,deflate
      Content-Type: multipart/form-data; boundary="----=_Part_0_1896884270.1608028565346"
      MIME-Version: 1.0
      vaapiuser: ***
      Content-Length: 96806
      Host: ***
      Connection: Keep-Alive
      User-Agent: Apache-HttpClient/4.5.2 (Java/15)


      ------=_Part
      Content-Type: application/json; name=***.json
      Content-Transfer-Encoding: binary
      Content-Disposition: form-data; name="***.json"; filename="***.json"

      {"documents":
      [
      {***
      ]
      }
      ------=_Part
      Content-Type: application/pdf; name=test.pdf
      Content-Transfer-Encoding: binary
      Content-Disposition: form-data; name="test.pdf"; filename="test.pdf"

      %PDF-1.3
      ................................................................

       

      Response

      {"status":"ERROR","message":"\"Error in document #1 - [DM_SYSOBJECT_E_NO_CONTENT_TYPE]error: \\\"No content type specified for DA sysobject.\\\"\"","documentIds":null}

       

      Postman Request

      POST **** HTTP/1.1
      vaapiuser: *****
      User-Agent: PostmanRuntime/7.26.8
      Accept: */*
      Postman-Token: 6a419ee7-dfca-4543-834e-cdc23e6ca78c
      Host: ***
      Accept-Encoding: gzip, deflate, br
      Connection: keep-alive
      Content-Type: multipart/form-data; boundary=--------------------------264662573644671205416351
      Content-Length: 96673

      ----------------------------
      Content-Disposition: form-data; name=""; filename="***.json"
      Content-Type: application/json

      {"documents":
      [
      ***]
      }
      ----------------------------
      Content-Disposition: form-data; name=""; filename="test.pdf"
      Content-Type: application/pdf

      %PDF-1.3
      ......................................................................

       

      Response

      {"status":"OK","message":"Document(s) have been tasklisted in ***.","documentIds":["***"]}

       

      Thanks for your help !

      • Khouloud's avatar
        Khouloud
        New Member

        Hello abirHajali,

        Your Content-type in both parts are not well sended

        Instead of Content-Type: application/json; name=***.json you should send Content-Type: application/json;

        My advice is to modify your request and correct Content-type, the way to do it is to use Event handlers (Filtering requests)

        Use: RequestFilter.filterRequest to modify request before sending, this script aim to retreive and enter the correct Content-type

        def bodyPartAttach = context.getProperty("httpMethod").requestEntity.message.content.getBodyPart(0) // get a part by number, it starts with 0
        bodyPartAttach.removeHeader("Content-Type")
        bodyPartAttach.addHeader("Content-Type", "application/json")

         

        Do the same with the second part (index = 1)

         

         

         

         

         

    • abirHajali's avatar
      abirHajali
      Occasional Contributor

      Hello ZDGN ,

      This is exactly what i did.

      Still having the same error.

       

      Thanks for your help !