【发布时间】:2018-04-21 16:16:52
【问题描述】:
我是 Android 应用程序开发的新手。我正在开发一个购物车应用程序。我正在尝试使用 android 以 GET 方法调用 Web 服务。但是我该怎么做呢?我试过的就在这里。但它给了我一个错误PostResponseAsyncTask: 405 Method not allowed。如何解决?任何人都可以帮助我吗?提前致谢。
MainFragment 类
public class MainFragment extends Fragment implements AsyncResponse, AdapterView.OnItemClickListener{
public static final String PREFS = "prefFile";
final String LOG = "MainFragment";
final static String url = "http://10.0.3.2:8080/WebService/rest/get/products";
private ArrayList<Products> productList;
private ListView lv;
FunDapter<Products> adapter;
View view;
public MainFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_main, container, false);
ImageLoader.getInstance().init(UILConfig.config(MainFragment.this.getActivity()));
PostResponseAsyncTask taskRead = new PostResponseAsyncTask(MainFragment.this.getActivity(), this);
taskRead.execute(url);
return view;
}
@Override
public void processFinish(String s) {
productList = new JsonConverter<Products>().toArrayList(s, Products.class);
BindDictionary dic = new BindDictionary();
dic.addStringField(R.id.tvName, new StringExtractor<Products>() {
@Override
public String getStringValue(Products item, int position) {
return item.name;
}
});
dic.addStringField(R.id.tvDesc, new StringExtractor<Products>() {
@Override
public String getStringValue(Products item, int position) {
return item.description;
}
}).visibilityIfNull(View.GONE);
dic.addStringField(R.id.tvPrice, new StringExtractor<Products>() {
@Override
public String getStringValue(Products item, int position) {
return ""+item.price;
}
});
dic.addDynamicImageField(R.id.ivImage, new StringExtractor<Products>() {
@Override
public String getStringValue(Products item, int position) {
return item.pic;
}
}, new DynamicImageLoader() {
@Override
public void loadImage(String url, ImageView img) {
//Set image
ImageLoader.getInstance().displayImage(url, img);
}
});
dic.addBaseField(R.id.btnCart).onClick(new ItemClickListener() {
});
adapter = new FunDapter<>(MainFragment.this.getActivity(), productList, R.layout.product_row, dic);
lv = (ListView)view.findViewById(R.id.lvProduct);
lv.setAdapter(adapter);
lv.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
}
}
【问题讨论】:
-
服务器端好像有问题。由于405错误代码提示“请求方法被服务器知道但已被禁用,无法使用。”
-
@WaqarUlHaq 这不是服务器端问题。是他的请求方法问题。
-
我认为处理网络 api 的最佳方法是使用改造。并检查数据来定义 url 并定义 405 错误
标签: android rest web-services