كيفية فك ضغط طلب بيانات json في جانب الخادم؟

أمتلك رمزًا جانبيًا لعميل "بايثون" يتلقى عنوان URL ببيانات مضغوطة JSON .

أريد إلغاء ضغط وطباعة بيانات JSON (التي حصلت عليها من طلب العميل) في جافا .

رمز العميل:

  #!/usr/bin/python

  import sys, getopt
  import requests
  import json
  from zlib import compress

  s = requests.session()
  url = "http://1.1.1.1:8080/eventfull/send/data/"
  payload = dict(
    username="test",
    password="test123",
    emailid=sys.argv[1],
    campaignfrom="[email protected]",
    send_id="1234",
    istest="1",
    render_id=sys.argv[2],
    subject="Eventfull :: Services HeartBeat",
    htmlbody="<html><body>
Hi Team,




This is a Test Campaign to ensure eventfull calls are working as expected




Thanks,



Tech Team

</body></html>", textbody="Testing" ) json_string = json.dumps(payload) compressed = compress(json_string,9) response = s.post(url, data=compressed ) print response.status_code print response.content
0

2 إجابة

نظرًا لأنك تستخدم zlib لضغط البيانات ، يمكنك إما استخدام Gzip أو InflaterInputStream لفك ضغط البيانات ، واجه مستخدمو stackoverflow آخرين مشكلة مشابهة لمشاكلك ، ويمكنك العثور على طريقة لفك ضغط مثل gzip هنا وبالنسبة إلى InflaterInputStream هنا ، فإن القليل من Google تم البحث عن zlib في جافا مع المكتبة أيضًا.

0
وأضاف
لقد حصلت على هذا الرمز في وقت سابق. أولاً ، أحتاج إلى الحصول على نص الطلب (الذي لا أعرفه) ثم يمكنني إلغاء الضغط. شكرا جزيلا!
وأضاف المؤلف Aamir Khan, مصدر

شكرا لكم جميعا لمساعدتكم ، والتي تمكنت من خلالها من إكمال مهمتي. قد يستغرق الأمر وقتًا طويلاً حتى يكتمل ولكنه يستحق ذلك. أدناه هو رمز العمل الخاص بي. [تستحق المشاركة]

@POST  
@Path("/Data")  
@Consumes("application/zip")


public Response uploadFile2(InputStream incomingData) {




    try {
        //Decompressing...
        InflaterInputStream inf = new InflaterInputStream(incomingData);

        //Extracting Json Data....
        JSONParser jsonParser = new JSONParser();
        JSONObject jsonObject = (JSONObject)jsonParser.parse(
                new InputStreamReader(inf, "UTF-8"));


        String name = (String) jsonObject.get("username");
    }
    catch(SQLException se){
        System.out.println(se.getLocalizedMessage());
    }


    catch (Exception e) {
        e.printStackTrace();
    }


   //return HTTP response 200 in case of success
    return Response.status(200).entity("Success").build();
0
وأضاف