使用 Retrofit 在 Android ( Java) 中发送 POST 请求

我需要从 android 应用程序调用一个 API,但不能让它工作.. 相同的 py 代码工作正常.. 如何使用 Retrofit 在 Android 中移植以下 python 代码?


import requests

import json


head = {'X-API-KEY':'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'}

args = {'item1', 'value'}


c = requests.post("http_link",data=json.dumps(args),headers=head)

print(c.text)

如果在不使用改造库的情况下可以使用解决方案,请分享。我尝试通过以下方式使用改造库在应用程序中实现上述 python 代码......接口:


public interface Safety_aws_api {

    String BASE_URL = "httplink";

    @Headers("{X-API-KEY:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}")

    @POST("Apisender")

    Call<ModelApiResponse> getApi(@Body Model_ApiCaller model_apiCaller);

}

模型类:


public class Model_ApiCaller {

    public String getApiName() {

        return apiName;

    }


    public void setApiName(String apiName) {

        this.apiName = apiName;

    }


    private String apiName;

    public Model_ApiCaller( String apiName){

        this.apiName = apiName;

    }


    public Model_ApiCaller(){


    }

}



public class ModelApiResponse {

    private String types, Api;


    public String getTypes() {

        return types;

    }


    public void setTypes(String types) {

        this.types = types;

    }


    public String getApi() {

        return Api;

    }


    public void setApi(String api) {

        Api = api;

    }

}

助手类:


 public class RetroHelper {


      private static Retrofit retrofit = new Retrofit.Builder()

        .baseUrl(Safety_aws_api.BASE_URL)

        .addConverterFactory(GsonConverterFactory.create())

        .build();


      public static Safety_aws_api api = retrofit.create(Safety_aws_api.class);

}

调用函数:


private void getCodes( Model_ApiCaller model_apiCaller) {

    Call<ModelApiResponse> call = RetroHelper.api.getApi(model_apiCaller);

    call.enqueue(new Callback<ModelApiResponse>() {


        @Override

        public void onResponse(Call<ModelApiResponse> call, Response<ModelApiResponse> response) {

            tv_sample_data.setText( response.body().getApi());

        }



紫衣仙女
浏览 398回答 2
2回答

人到中年有点甜

尝试使用以下代码添加标题。如果输出相同,请分享您当前对 API 调用的响应。&nbsp;&nbsp;&nbsp;Call<ModelApiResponse>&nbsp;getApi(@Header("X-Authorization")&nbsp;String&nbsp;apiKey,@Body&nbsp;Model_ApiCaller&nbsp;model_apiCaller);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java