如何处理带有html内容的请求?

时间:2018-08-04 11:34:58

标签: android retrofit2

我向服务器发出的请求是,响应为HTML类型,如下所示:

<!DOCTYPE html>
<html>
    <head>
        <title>info starter</title>
    </head>
    <body>
        <!DOCTYPE html>
        <html lang="en">
            <head>
                <meta charset="UTF-8">
                <title>بازی نما</title>
                <style>
    }
      } }
    body{margin: 0;direction: rtl; font-family: myFont;font-size: 16px;padding: 1em 2em;background: url('https://bazinama.vasapi.click/static/bazinama-files/images/boundry.jpg') top center;color: #fff;}.coins{float: left;font-size: 1.5em;margin-top: -0.2em;}.coin-img{width: 1.5em;margin: -0.1em 0.5em;float: left;animation: coin 1s infinite linear;-webkit-animation: coin 1s infinite linear;-moz-animation: coin 1s infinite linear;}.row{margin: 2em 0;}p{line-height: 2.4em !important;}.title{text-align: center;margin-bottom: 1.5em;}.title .bold{font-size: 1.5em;color: #ffc800;}.box{background: rgba(11, 111, 251, 0.9);padding: 1em;border-radius: 1em;-webkit-border-radius: 1em;-moz-border-radius: 1em;margin: 2em 0;}.mobile-icon{width: 70px;float: right;}
    </style>
            </head>
            <body>
                <h2 class="title">
                    <span class="bold"> استارتر،</span>، پلتفرم حمایت از بازی های ایرانی و بازی سازی ملی است.
                </h2>
                <p>گیمرها، شرکت ها و تیم هپردازند،. </p>
            </body>
        </html>
    </body>
</html>

我用Retrofit这样设置请求:

  @Headers("Accept: text/html")
  @GET("pages/Bazinamamag/starter/")
  Call<ResponseBody> getContactUsInfo();

并准备这样的请求:

@Override
  public void getContactUsInfo(@Nullable final LoadContactUsCallback callback) {
        final ApiService service = ServiceGenerator.createService(ApiService.class);

        service.getContactUsInfo().enqueue(new Callback<ResponseBody>() {
          @Override
          public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {

            try {
              Log.d(TAG, "onResponse: " + response.body().string());

              callback.onTasksLoaded(response.body().string());

            } catch (IOException e) {
              e.printStackTrace();
              Log.e(TAG, "onResponse: " + e.getMessage());
            }

          }

          @Override
          public void onFailure(Call<ResponseBody> call, Throwable t) {

            Log.e(TAG, "onFailure: " + t.getMessage());
            callback.onDataNotAvailable();

          }
        });
      }

但是始终无法获得作为响应的HTML代码。

如何获取html响应?

谢谢。

1 个答案:

答案 0 :(得分:1)

如果您使用的Api仅提供HTML,则可以告诉Retrofit请求HTML,例如:

@Headers("Accept: text/html")
@GET("myUrl")
Call<String> getContactUsInfo();

另外,请注意,在onResponse中,响应可以是任何内容,将isSuccessful包裹在其中,如下所示:How to get Retrofit success response status codes

编辑:似乎需要一个String数据的标量转换器。 这将是

compile 'com.squareup.retrofit2:converter-scalars:2.3.0'

喜欢提到的here