养乐多滋滋滋 2024-06-11 10:30 采纳率: 94.4%
浏览 2
已结题

我这里是写死的,如何改成动态的

img


图上标红的地方如何改成动态


  new Thread(new Runnable() {
                    @Override
                    public void run() {

//                        OkHttpUtils builder = OkHttpUtils
//                                .builder();
////                        builder.url("http://192.168.10.254:18081/");
//                        //**********For Jin Begin**********
//                        builder.url("http://192.168.10.254:18081/MSG");
//                        //**********For Jin end**********
//                        builder.AddHeader("content-type", "application/json;charset=UTF-8");
////                        builder.post(user);
//                        //**********For Jin Begin**********
//                        builder.post(json);
                        OkHttpClient client = new OkHttpClient().newBuilder().build();
                        MediaType mediaType = MediaType.parse("application/json");
                        RequestBody body = RequestBody.create(mediaType,
                                "{\r\n    \"ID\" : 10242," +
                                        " \r\n    \"FLAG\" : 12," +
                                        " \r\n    \"USER\" : 1," +
                                        " \r\n    \"S0\" : \"\"," +
                                        "\r\n    \"CNT1\" : 0," +
                                        "\r\n    \"CNT2\" : 0" +
                                        "\r\n}");
                        Request request = new Request.Builder()
                                .url("http://192.168.10.10:18081/MSG")
                                .method("POST", body)
                                .addHeader("Content-Type", "application/json")
                                .build();
                        Response response = null;
                        try {
                            response = client.newCall(request).execute();
                        } catch (IOException e) {
                            throw new RuntimeException(e);
                        }
                        String responseData = null;
                        try {
                            responseData = response.body().string();
                        } catch (IOException e) {
                            throw new RuntimeException(e);
                        }
                        Log.w("回码数据--------------------------------》",responseData);

                        // 使用Handler将响应数据发送到主线程
                        Message message = mHandler.obtainMessage();
                        message.what = 0;
                        message.obj = responseData;
                        mHandler.sendMessage(message);
                        //**********For Jin end**********
//                        builder.async(new OkHttpUtils.ICallBack() {
//                            @Override
//                            public void OnSuccessful(Call call, String data) {
//                                updateData(data);
//                            }
//
//
//                            @Override
//                            public Void OnFailure(Call call, String data) {
//                                return null;
//                            }
//                        });
                    }
                }).start();
            }
        }
    }
  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-11 10:30
    关注

    引自免费微信小程序:皆我百晓生

    要将硬编码的部分改为动态,可以使用多种方法。在给定的代码片段中,关键的硬编码部分包括URL、请求头、请求体等。这里,我将指导你如何使用Java中的Properties类来实现配置的动态加载,这样你就可以在不修改代码的情况下更改这些值。

    步骤 1: 创建配置文件

    首先,你需要创建一个.properties文件,例如config.properties,并将其放在项目的资源目录下。在这个文件中,你将定义所有需要动态加载的属性。例如:

    api.url=http://192.168.10.254:18081/MSG
    content.type=application/json
    request.body={"ID":10242,"FLAG":12,"USER":1,"S0":"","CNT1":0,"CNT2":0}
    

    步骤 2: 加载配置文件

    在你的Java代码中,使用Properties类来加载这个配置文件,并读取所需的属性。下面是如何加载和使用Properties的示例代码:

    import java.io.FileInputStream;
    import java.io.IOException;
    import java.util.Properties;
    
    public class ConfigLoader {
        private static final Properties properties = new Properties();
    
        static {
            try {
                properties.load(new FileInputStream("path/to/config.properties"));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public static String getProperty(String key) {
            return properties.getProperty(key);
        }
    }
    

    步骤 3: 在代码中使用动态配置

    接下来,在你的代码中使用ConfigLoader类来获取动态配置。这将允许你在不修改代码的情况下更改API URL、请求头或请求体。以下是修改后的代码段示例:

    import okhttp3.*;
    
    public class DynamicRequestExample {
        public static void main(String[] args) {
            OkHttpClient client = new OkHttpClient();
            MediaType mediaType = MediaType.parse(ConfigLoader.getProperty("content.type"));
            RequestBody body = RequestBody.create(
                    mediaType,
                    ConfigLoader.getProperty("request.body")
            );
            Request request = new Request.Builder()
                    .url(ConfigLoader.getProperty("api.url"))
                    .method("POST", body)
                    .addHeader("Content-Type", ConfigLoader.getProperty("content.type"))
                    .build();
            
            try (Response response = client.newCall(request).execute()) {
                System.out.println(response.body().string());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    总结

    通过上述步骤,你已经成功地将硬编码的部分转换为动态加载的配置,使得应用程序更加灵活和可维护。如果你需要更改任何配置项,只需修改config.properties文件即可,无需重新编译代码。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月19日
  • 已采纳回答 6月11日
  • 创建了问题 6月11日

悬赏问题

  • ¥15 combobox绑定值改变的问题
  • ¥15 from seleniumwire import webdriver 在抓取http://链接的时候会自动转https://这个怎么解决
  • ¥15 hive直连数据库模式插入mysql表数据失败(相关搜索:数据库)
  • ¥30 不会,学习,有偿解答
  • ¥15 SQL查询语句报错(检查)
  • ¥15 此表中公式应该怎么写
  • ¥15 求HI-TECH PICC 9.50 PL3安装包
  • ¥15 下载ctorch报错,求解
  • ¥15 如何入门学习c语言,单片机
  • ¥15 idea 编辑语言的选择