안녕하세요.
http://apis.data.go.kr/1230000/OrderPlanSttusService/getOrderPlanSttusListServc?serviceKey=9j9xGgJKOdgGJGJTWwKyhJv1JYATU502xB9fnCM2mFTIz0hGtjBBOSlN2WdCKAI0I%2BAX%2BBPuDWwYt176hWOJrA%3D%3D&numOfRows=10&pageSize=10&pageNo=1&startPage=1&inqryDiv=1&orderBgnYm=201606&orderEndYm=201608&inqryBgnDt=201606010000&inqryEndDt=201606282359
이러한 공공data를 읽어오려는데 제대로 파싱이 되지 않는 것 같습니다. 소스 첨부합니다
private void get() {
Retrofit retrofit;
retrofit = new Retrofit.Builder()
.baseUrl(getString(R.string.api_host))
.addConverterFactory(SimpleXmlConverterFactory.create())
.build();
LinkedHashMap<String, String> options = new LinkedHashMap<>();
try {
options.put(URLEncoder.encode("ServiceKey", "UTF-8"), getString(R.string.auth_key));
options.put(URLEncoder.encode("numOfRows", "UTF-8"), URLEncoder.encode("10", "UTF-8"));
options.put(URLEncoder.encode("pageSize", "UTF-8"), URLEncoder.encode("10", "UTF-8"));
...
} catch (IOException e) {
e.printStackTrace();
}
RetrofitService retrofitService = retrofit.create(RetrofitService.class);
Call<ResponseItem> call = retrofitService.getItem(options);
call.enqueue(new Callback<ResponseItem>() {
@Override
public void onResponse(Call<ResponseItem> call, Response<ResponseItem> response) {
ResponseItem item = response.body();
Log.d(TAG, response.message());
Log.d(TAG, item.getBody().getItems().getItemList().get(0).getAgrmntYn());
Log.d(TAG, response.headers().toString());
}
@Override
public void onFailure(Call<ResponseItem> call, Throwable t) {
t.printStackTrace();
Log.d(TAG, t.getMessage());
Log.d(TAG, "onFailure");
}
});
}
@Root(name = "response", strict = false)
public class ResponseItem {
@Element(name = "header", required = false)
Header header;
@Element(name = "body", required = false)
Body body;
}
@Root(name = "header", strict = false)
public class Header {
@Element(name = "resultCode", required = false)
String resultCode;
@Element(name = "resultMsg", required = false)
String resultMsg;
public String getResultCode() {
return resultCode;
}
public String getResultMsg() {
return resultMsg;
}
}
@Root(name = "body")
public class Body {
@Element(name = "items")
Items items;
@Element(name = "numOfRows")
int numOfRows;
@Element(name = "pageNo")
int pageNo;
@Element(name = "totalCount")
int totalCount;
}
@Root(name = "items")
public class Items {
@ElementList(name = "item", inline = true)
List<Item2> itemList;
}
@Root(name = "item", strict = false)
public class Item2 {
@Element(name = "bsnsDivCd")
private int bsnsDivCd;
@Element(name = "bsnsDivNm")
private String bsnsDivNm;
@Element(name = "bsnsTyCd")
private String bsnsTyCd;
@Element(name = "bsnsTyNm")
private String bsnsTyNm;
@Element(name = "orderYear")
private int orderYear;
...
}
며칠째 고생중입니다 ㅠㅠ 다른 xml예제는 성공했는데 어디가 문제인지 감이 안잡힙니다..
도움 부탁드립니다 (__)