тело запроса okHTTP POST со многими потомками - PullRequest
0 голосов
/ 30 сентября 2019

Я использую API тарификации от оператора связи, и следующий формат JSON должен быть передан с вызовом API. Я использую библиотеку okHTTP.

String telNum = "+941234567";

String pbody = "{\"amountTransaction\": {\"clientCorrelator\": \"7659\",\"endUserId\": \"tel:"+telNum+"\",\"paymentAmount\": {\"chargingInformation\": {\"amount\": 1,\"currency\": \"LKR\",\"description\": \"Test Charge\"},\"chargingMetaData\": {\"onBehalfOf\": \"IdeaBiz Test\",\"purchaseCategoryCode\": \"Service\",\"channel\": \"WAP\",\"taxAmount\": \"0\",\"serviceID\": \"theserviceid\"}},\"referenceCode\": \"REF-12345\",\"transactionOperationStatus\": \"Charged\"}}";```

Ниже приведен порядок форматирования JSON.

{
    "amountTransaction": {
        "clientCorrelator": "54321",
        "endUserId": "tel:+94761234567",
        "paymentAmount": {
            "chargingInformation": {
                "amount": 1,
                "currency": "LKR",
                "description": "Test Charge"
            },
            "chargingMetaData": {
                "onBehalfOf": "IdeaBiz Test",
                "purchaseCategoryCode": "Service",
                "channel": "WAP",
                "taxAmount": "0",
                "serviceID": "null"
            }  
        },
        "referenceCode": "REF-12345",
        "transactionOperationStatus": "Charged"
    }
}

Я получаю ошибку 400 Bad Request

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

OkHTTP требует RequestBody объект для POST, поэтому попробуйте это:

RequestBody body = RequestBody.create(MediaType.APPLICATION_JSON, pbody);
Request request = new Request.Builder()
                .url(url)
                .post(body)
                .build();
0 голосов
/ 30 сентября 2019

Попробуйте это отформатировать ваше тело в соответствии с вашими потребностями

 try {
        JSONObject jsonObject = new JSONObject(pbody);
        pbody=jsonObject.toString();
    } catch (JSONException e) {
        e.printStackTrace();
    }
...