Как я могу получить данные со страницы php (без json)? - PullRequest
0 голосов
/ 28 января 2019

У меня есть этот сайт (http://www.usadebtclock.com/us-debt-clock-widget.php)), и я хочу получить с него номер (нет JSON) для моего приложения для Android Studio, используя модификацию 2, и показать этот номер в текстовом представлении. Какую фабрику конвертеров использовать?вместо 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");
                    }
                });


            }
        });
    }
}

Это API ответа Retrofit2:

public interface DolgAPI {

    String HOST = "http://www.usadebtclock.com";

    @GET("us-debt-clock-widget.php")
    Call<String> getDolg();

}

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Вы должны использовать ResponseBody

getDolg() should return Call<ResponseBody>

Тогда вам нужно разобрать html.Кредит возвращается в этом формате

<span id="debt-clock">$21,954,170,905,365.84</span>

Вы можете проанализировать HTML с помощью регулярных выражений.

0 голосов
/ 28 января 2019

Я использовал WebView для отображения значения с этого сайта

Он содержит JavaScript, поэтому я использовал следующие строки, чтобы разрешить выполнение веб-скриптов в приложении:

WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
0 голосов
/ 28 января 2019

В первую очередь выглядит как веб-сайт, если он не работает, так как не загружается.Но если предположить, что он работает, и у вас нет какой-либо GET / конечной точки, вы получите обратно весь HTML-документ, и вам нужно проанализировать его с помощью html-тегов, чтобы получить необходимый текст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...