使用 Retrofit 2 解析 XML

2024-05-15

我试图从央行获取汇率。不幸的是他们没有可以提供 JSON 数据的 api。仅在 XML 中。我正在使用 Retrogit 2。我已经创建了两个类,它们描述了我从网站获得的 xml。但是当我尝试获取回调的响应时,我收到了 404 错误代码。也许我的@GET方法不正确?请帮我!

第一个 XML 片段。它包含日期的货币数组:

<ValCurs Date="14.01.2017" name="Foreign Currency Market">
    <Valute ID="R01010">
    <NumCode>036</NumCode>
    <CharCode>AUD</CharCode>
    <Nominal>1</Nominal>
    <Name>Австралийский доллар</Name>
    <Value>44,5156</Value>
    </Valute>

这是我的界面:

public interface CbClient {

    @GET("/XML_daily.asp")
    Call<ValuteOnDate> getValuteOnDate();
}

和服务生成器类:...

public class ServiceGenerator {

    public static final String API_BASE_URL = "http://www.cbr.ru/scripts/";

    private static OkHttpClient.Builder httpClient = new OkHttpClient.Builder();

    private static Retrofit.Builder builder = new Retrofit.Builder()
                                                .baseUrl(API_BASE_URL)
            .addConverterFactory(SimpleXmlConverterFactory.create());
    public static <S> S createService(Class<S> serviceClass) {
        Retrofit retrofit = builder.client(httpClient.build()).build();
        return retrofit.create(serviceClass);
    }
}

这是 MainActivity 类:...

public class MainActivity extends AppCompatActivity {

private static final String TAG = "TestRetrofitClien";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    CbClient client = ServiceGenerator.createService(CbClient.class);
    Call<ValuteOnDate> call = client.getValuteOnDate();
    call.enqueue(new Callback<ValuteOnDate>() {
        @Override
        public void onResponse(Call<ValuteOnDate> call, Response<ValuteOnDate> response) {
            try {
                if (response.isSuccessful()) {
                        ValuteOnDate valuteOnDate = call.execute().body();
                        Log.i(TAG,"valuteOnDate: " + valuteOnDate);
                        ValuteOnDate valuteFromResponse = response.body();
                        Log.i(TAG,"valuteFromResponse: " + valuteFromResponse);
                }else {
                    Log.e(TAG, "Retrofit Response: " + response.errorBody().string());
                    Log.d(TAG, "Error message: " + response.raw().message());
                    Log.d(TAG,"Error code: " + String.valueOf(response.raw().code()));
                }
            } catch (IOException e) {
                Log.e("LOG", "Exeption: " + e);
            }
        }

        @Override
        public void onFailure(Call<ValuteOnDate> call, Throwable t) {
        }
    });
}


}

删除 @GET("/XML_daily.asp") 中的前导斜杠

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Retrofit 2 解析 XML 的相关文章

随机推荐

  • 分而治之策略来确定列表中是否有超过 1/3 的相同元素

    我正在使用分治算法来确定列表中是否有超过 1 3 的元素相同 例如 1 2 3 4 不 所有元素都是唯一的 1 1 2 4 5 是的 其中 2 个是相同的 没有排序 是否有分而治之的策略 我陷入了如何划分的困境 def is valid i
  • 使用 php ping 网站

    我想创建一个 php 脚本 它将 ping 一个域并列出响应时间以及请求的总大小 这将用于监控网站网络 我尝试过curl 这是我到目前为止的代码 function curlTest2 url clearstatcache return if
  • 找不到将 SAML 应用发布到 G Suite 的位置

    我们已经在 G Suite Marketplace 上发布了一个应用程序 但我们现在希望发布一个应用程序 以便公众在转到 G Suite gt 应用程序 gt SAML 应用程序时可以使用该应用程序 然后将其列出 具体来说 我们希望将我们的
  • 在 OSX 和 GNU 中使用“find”删除带有数字的文件名

    我正在尝试搜索一个文件并删除名称中包含数字的类似文件 我的文件 txt from myfile 00 04 version txt myfile 00 txt find E iregex myfile 0 9 1 txt 删除 myfile
  • java.lang.ClassNotFoundException:由 AdMob / Google Play 服务引起的 android.os.AsyncTask?

    自 2014 年 11 月 21 日以来 我收到了数百份崩溃报告 堆栈如下 崩溃仅发生在 API 级别 10 设备上 该应用支持 9 在崩溃开始之前的几周内 该应用程序的同一版本一直运行良好 这让我认为这个问题是由最近推送到 Android
  • Azure 和直播

    我正在尝试使用 Azure 制作实时视频流 但我真的不知道应该先尝试什么 首先 有一个网站 上面有最新版本的 Flowplayer 现在我需要知道如何将网络摄像头的视频流传输到 Azure 我需要什么样的软件 我正在尝试使用 Express
  • 没有关于 bool 到浮点类型的隐式转换的警告?

    看起来这个片段在 clang 中编译时没有警告 即使使用 Weverything 也是如此 double x if fabs x gt 1 0 我错过了什么吗 或者编译器和 C 标准是否认为强制转换bool to double有道理吗 这是
  • 工厂模式和策略模式

    我需要创建一个类来负责结果集处理 但可能会发生应该使用不同的算法来处理该结果集的情况 我知道以下选项 1 使用策略模式 伪代码如下 interface Strategy processResultSet ResultSet rs class
  • 无需 Spring MVC 的定制 Spring Security

    我正在使用我自己的 MVC 实现 我不确定 Spring Security 是否不是专门为 Spring MVC 实现设计的 还可以用吗 我不清楚我应该使用 Spring Security 的哪些部分以及不需要哪些部分 我想我不需要 URL
  • C# 无法访问已释放的对象

    我正在制作一个服务器 客户端应用程序 我将服务器套接字设置为侦听 并设置 BeginAccept 方法 当我关闭服务器套接字 Socket Close 以关闭服务器时 BeginAccept 方法的异步回调方法抛出异常 我检查了异常 发现异
  • 通过反射使用私有字段对引用结构进行单元测试

    我实现了一对 ref 结构 并想为它们编写一些单元测试 当然 所有领域都是私有的 假设 API 不应该揭示类的内部工作原理 那么在某些操作之后 如何测试字段是否具有正确的值 我想避免仅仅为了适应测试而修改引用结构本身 我的第一个选择是反射
  • 具有动态变量数的公式

    假设有一些 data framefoo data frame想要找到目标列的回归Y由其他一些专栏 为此目的 通常使用一些公式和模型 例如 linear model lt lm Y FACTOR NAME 1 FACTOR NAME 2 fo
  • 为什么要加密 ASP.NET 中的查询字符串?

    我正在开发一个用 C ASP NET 编写的 Web 应用程序 该应用程序的原始设计者选择使用加密的查询字符串和Viewstate控制应用程序的 安全 和 状态 在此之前 我来自 GET POST 世界 我没有很好的基础来理解为什么人们会经
  • Flutter Websockets MacOS:相同的代码可以在调试模式下工作,但不能在发布模式下工作:“(操作系统错误:提供了节点名或服务名..)”

    Summary 我有一个在 Flutter 中使用 WebSockets 的程序 该程序在debug模式 但运行相同exact代码在release模式会导致错误 Context Flutter 文档告诉我们如何使用 WebSocket ht
  • 由于 CORS 错误,POST 请求在 React axios 中被阻止[重复]

    这个问题在这里已经有答案了 我正在尝试向包含多部分数据的 API 发送 POST 请求 我在 postman 中测试了 API 一切正常 但是当我在react中调用API时 它给了我CORS错误 我交叉检查了 URL 标头和数据 对我来说一
  • URL路径相似度/字符串相似度算法

    我的问题是我需要比较 URL 路径并推断它们是否相似 下面我提供了要处理的示例数据 GROUP 1 robots txt GROUP 2 bot html GROUP 3 phpMyAdmin 2 5 6 rc1 scripts setup
  • Python - 不使用复制模块的深度复制

    本质上 问题是创建一个函数 deepcopy L 它将返回列表 L 的深层副本 但是 我们被告知不要使用 copy 模块或其中的任何函数 我是入门课程的初学者 老实说我在这方面很挣扎 我们真正被告知的唯一一件事是我们应该使用递归来解决问题
  • 使用 VBA 通过简单命令从非连续范围的并集获取值到数组中(无循环)

    我有以下任务 表面上很简单 使用 VBA 将电子表格上多个列的值复制到二维数组中 为了让生活更有趣 这些柱子并不相邻 但它们的长度都相同 显然 可以通过依次循环每个元素来做到这一点 但这看起来非常不优雅 我希望有一个更紧凑的解决方案 但我很
  • Powershell日期类型无法找到

    我正在尝试使用PowerShell连接virustotal API 代码来自virustotal网站 我得到 无法找到类型 System Security Cryptography ProtectedData 错误信息 代码如下 funct
  • 使用 Retrofit 2 解析 XML

    我试图从央行获取汇率 不幸的是他们没有可以提供 JSON 数据的 api 仅在 XML 中 我正在使用 Retrogit 2 我已经创建了两个类 它们描述了我从网站获得的 xml 但是当我尝试获取回调的响应时 我收到了 404 错误代码 也