我是Android的新手,我想使用改造功能来解析xml文件,我已经遍历了stackoverflow中发布的链接
How to use Retrofit and SimpleXML together in downloading and parsing an XML file from a site?
但是在我的情况下,我必须添加标题,如何使用Retrofit实现此功能。
答案 0 :(得分:0)
不带标题的示例Web服务:
public interface ApiService {
@GET("/webservice/xml")
Call<YourClass> getXml();
}
这是我们添加静态和动态标题的方式:
public interface ApiService {
@Headers({"Accept: application/json"})
@GET("/webservice/xml")
Call<YourClass> getXml(@Header("Authorization") String authorization);
}
使用ApiService:
new Retrofit.Builder()
.baseUrl("server ip")
.addConverterFactory(SimpleXmlConverterFactory.create())
.build().create(ApiService.class).getXml("This is a value that will be sent as authorization header");
要使用此代码,应将以下行添加到gradle文件中:
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile('com.squareup.retrofit2:converter-simplexml:2.1.0') {
exclude group: 'xpp3', module: 'xpp3'
exclude group: 'stax', module: 'stax-api'
exclude group: 'stax', module: 'stax'
}
这是一个很好的教程https://futurestud.io/tutorials/retrofit-add-custom-request-header
答案 1 :(得分:0)
示例标头为静态值的接口:
public interface ApiService {
@Headers("user-key: 9900a9720d31dfd5fdb4352700c")
@GET("api/v2.1/search/webxml")
Call<String> getRestaurantsBySearch(@Query("q"), String query);
}
以标头作为参数的示例接口:
public interface ApiService {
@GET("api/v2.1/search/webxml")
Call<String> getRestaurantsBySearch(@Query("q"), String query, @Header("user-key") String userkey);
}