【发布时间】:2019-06-21 10:48:38
【问题描述】:
我有这个网站 (http://www.usadebtclock.com/us-debt-clock-widget.php),我想使用改造 2 从中获取号码(没有 JSON)到我的 android studio 应用程序,并在文本视图中显示这个号码。我应该使用什么转换器工厂而不是 GsonConverterFactory?或者我怎样才能从这个页面获取数字到我的文本视图?
我尝试为此使用GsonConverterFactory.create(),但它没有做出响应并显示来自onFailure 方法的日志
这是MainActivity.class(带有无用的GsonConverterFactory):
public class MainActivity extends AppCompatActivity {
TextView tv;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = findViewById(R.id.textview1);
btn = findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(DolgAPI.HOST)
.addConverterFactory(GsonConverterFactory
.create())
.build();
DolgAPI apiService = retrofit.create(DolgAPI.class);
Call<String> call = apiService.getDolg();
call.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
tv.setText(response.body());
Log.d("MyLog", "Got it!");
}
@Override
public void onFailure(Call<String> call, Throwable t) {
Log.d("MyLog", "Error");
}
});
}
});
}
}
这是 Retrofit2 响应 API:
public interface DolgAPI {
String HOST = "http://www.usadebtclock.com";
@GET("us-debt-clock-widget.php")
Call<String> getDolg();
}
【问题讨论】:
-
这不是一个数字,它是一个运行 Javascript 的 HTML 页面,它会更改值。如果不评估 javascript,您将无法获得该值
-
如果要显示实时数据,可以使用
WebView。 -
@VladyslavMatviienko 如何加载此页面并评估 javascript 以获得价值?
-
WebView 看起来不错,看看stackoverflow.com/questions/40889152/…
-
使用
WebView是我认为最简单的方法。此外,您可能想知道页面上的值只是一个虚拟值,并且仅由 JavaScript 计算。它不是从互联网上的某个地方加载的。所以你可以在你的应用中做类似的逻辑。