如何从 php 页面(没有 json)获取数据?
Posted
技术标签:
【中文标题】如何从 php 页面(没有 json)获取数据?【英文标题】:How can I get data from php page (without json)? 【发布时间】: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 看起来不错,看看***.com/questions/40889152/…
使用WebView
是我认为最简单的方法。此外,您可能想知道页面上的值只是一个虚拟值,并且仅由 JavaScript 计算。它不是从互联网上的某个地方加载的。所以你可以在你的应用中做类似的逻辑。
【参考方案1】:
我使用 WebView 显示该站点的价值
它包含 JavaScript,所以我使用下一行来允许在应用程序中执行 Web 脚本:
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
【讨论】:
【参考方案2】:首先看起来像网站,如果它不能正常工作,因为它没有加载。 但是如果假设它正在工作并且您没有任何 GET/ 端点,您将收到整个 HTML 文档,您需要通过 html 标签对其进行解析以获取所需的文本。
【讨论】:
【参考方案3】:你应该使用 ResponseBody
getDolg() should return Call<ResponseBody>
然后你必须解析 html。 这种格式的贷款回报
<span id="debt-clock">$21,954,170,905,365.84</span>
您可以使用正则表达式解析 html。
【讨论】:
以上是关于如何从 php 页面(没有 json)获取数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 php 获取数据表 jquery 插件的 json 数据