如何从 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();


【问题讨论】:

这不是一个数字,它是一个运行 javascripthtml 页面,它会更改值。如果不评估 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)获取数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何停止 jQuery 帖子页面刷新

如何从 php 获取数据表 jquery 插件的 json 数据

如何获取网页中的json数据?

如何使用 php 从 json 获取特定的电子邮件数据

PHP:如何从 JSON 中获取变量(从 Swift iOS 应用程序发送)并以 JSON 响应

从 PHP 查询中获取 JSON 数组后,使用 javascript 将 JSON 数组写入 html 页面