Web Services 使用Retrofit的POST原始数据

dsekswqp  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(166)

我正在尝试使用Retrofit发布原始数据。
我找到了很多解决方案来使用volley在Body中发布JSON,但是我发送的数据不是JSON。我的数据是:{项目用途:[执行]}
虽然从 Postman 打,我得到的数据,但不是在android.
请告诉我怎么做。
我尝试以字符串形式发送,但错误代码为500
我还在JsonObject中发送了数据,但没有工作。
这是我的代码调用..

String bodyST = "{project_purpose: [purpose]}";

 OR

 JsonObject data = new JsonObject();
 JSONArray jarray = new JSONArray();
 jarray.put("EXECUTION");
 data.addProperty("project_purpose", String.valueOf(jarray));

 Call<JsonArray> call = apiInterface.getData(mAuthToken, "application/json", bodyST);
jqjz2hbq

jqjz2hbq1#

试试这个

当我试图***只以原始形式发布数据时,我也面临着同样的问题***,为此,我浪费了一整天的时间,之后我得到了我的解决方案。
1.你的API接口应该是这样的:-

@POST(Constants.CONTACTS_URL)
Call<Object> getUser(@Body Map<String, String> body);

1.在您的类中调用

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(Constants.BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .build();
ApiInterface apiInterface = retrofit.create(ApiInterface.class);

try {
    Map<String, String> requestBody = new HashMap<>();
    requestBody.put("email", "davinder.codeapex@gmail.com");
    requestBody.put("password", "12345678");
    Call<Object> call=apiInterface.getUser(requestBody);
    call.enqueue(new Callback<Object>() {
        @Override
        public void onResponse(Call<Object> call, Response<Object> response) {
            try {
                JSONObject object=new JSONObject(new Gson().toJson(response.body()));
                Log.e("TAG", "onResponse: "+object );
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        @Override
        public void onFailure(Call<Object> call, Throwable t) {
        }
    });
} catch (Exception e) {
    e.printStackTrace();
}

输出量
日志目录:x1c 0d1x
Postman

注意:-我不使用任何模型类来获取数据,检索数据后,您可以使用任何方式来存储数据。

ego6inou

ego6inou2#

把你的身体当作绳子

@PUT("your-endpoint")
fun yourRequsetFunction(@Body body : String) :Response<YourResponseType>

相关问题