首页 > 解决方案 > 如何从 php 页面(没有 json)获取数据?

问题描述

我有这个网站(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();

}

标签: javaandroidretrofit2

解决方案


我使用 WebView 显示该站点的价值

它包含 JavaScript,所以我使用下一行来允许在应用程序中执行 Web 脚本:

WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

推荐阅读