环境:Android 2.3.3 , xutils-3.3.36 ,fastjson-1.2.7.jar
下载xutils-3.3.36.jar 包放在app 下的libs目录下,然后右键jar包 选择 add as library ;好像也可以直接在build.gradle里添加依赖;
新建application 初始化xutil
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//全局初始化
x.Ext.init(this);
}
}

注意点:

问题1:java.net.connetException:fail to connect to localhost:8080 after 15000ms :is connected failed:ECONNREFUSED(conection refused)
或 java.net.socketTimeOutException:filed to connect to /10.0.2.2 (port:8080) after 15000ms
最后还是换成自己的ip吧
问题2:java.lang.IlegalArgumentException:not found @HttpResponse from class java.lang.Object
我的接口返回的数据是LIst<class>集合,我以为回调类型是Object,所以不是,因为返回json格式数据,所以是String
参考:java.lang.IllegalArgumentException: not found @HttpResponse from class java.lang.Object解决方法_w-CSDN博客
问题3:接收到数据后转成集合
我用的fastjson (记得导入jar包),直接parseArray(String text, Class<T> clazz);

问题4:AndroidManifest 里权限,以及要声明application
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

源码:MainActivity
package com.example.testhttpdata;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import com.alibaba.fastjson.JSON;
import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private Spinner spinner;
private List<String> data_list=new ArrayList<String>();
private ArrayAdapter<String> arr_adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = (Spinner) findViewById(R.id.spinner);
//得到数据
String url="http://192.168.10.18:8080/recruit/human/selectdept"; //改成本机ip
RequestParams params=new RequestParams(url);
Callback.Cancelable cancelable=x.http().get(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String s) {
Log.i("Test", "onSuccess....");
if(s!=null){
//JSONArray arr=JSON.parseArray(s);
List<DeptDto> list=JSON.parseArray(s,DeptDto.class);
data_list = new ArrayList<String>();
for (DeptDto dd:list){
data_list.add(dd.getDept_name());
}
//适配器
arr_adapter= new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_spinner_item,data_list);
//设置样式
arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//加载适配器
spinner.setAdapter(arr_adapter);
}
}
@Override
public void onError(Throwable throwable, boolean b) {
Log.i("Test", "onError....");
}
@Override
public void onCancelled(CancelledException e) {
Log.i("Test", "onCancelled....");
Log.i("Test", "onCancelled....");
Log.i("Test", "onCancelled....");
Log.i("Test", "onCancelled....");
}
@Override
public void onFinished() {
}
});
//主动调用取消请求
//cancelable.cancel();
}
}
MyApplication
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//全局初始化
x.Ext.init(this);
}
}
AndroidManifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.testhttpdata">
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.testhttpdata.MainActivity">
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/spinner">
</Spinner>
</android.support.constraint.ConstraintLayout>
后台接口是ssm框架的

你也可以用你自己的接口
本文介绍如何使用XUtils库进行网络请求,并展示了从服务器获取数据、解析JSON格式数据为List集合的过程。文章还解决了常见错误,如连接超时等问题。

2265

被折叠的 条评论
为什么被折叠?



