1.新建Android项目(我这里用的是AndroidStudio,但是我在学习阶段用的是eclipse,代码都一样)。
2.在AndroidManifest.xml配置添加两个权限就够了,网上很多人配置了很多权限,到后来还不是没用,如果要发http请求,只需配置这两个。
3.ui界面(activity_main.xml)
<TextView
android:id="@+id/tv_json"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
/>
4.java类(MainActivity.java)
package tgc.rj.qmkh;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import tgc.rj.qmkh.utils.FilesUtils;
public class MainActivity extends AppCompatActivity {
private String urlWww="";//这里写你的请求web端的地址,比如http://192.168.1.2:8080/tsgl/android/bookAll
private String response = "";
private TextView tv_json;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_json = findViewById(R.id.tv_json);
String par = "str="+"1323123";
sendHttp(urlWww, par);//第一个是请求地址。第二个参数传的值。第二个参数如果没有参数,可以不带参数,直接给""
}
private void sendHttp(final String urlStr, final String paramStr){
new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection conn = null;
try {
URL url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Charset", "UTF-8");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestMethod("POST");
conn.setConnectTimeout(8000);
conn.setReadTimeout(8000);
String param = paramStr;
OutputStream outputStream = conn.getOutputStream();
DataOutputStream out = new DataOutputStream(outputStream);
out.writeBytes(param);
out.flush();
out.close();
InputStream inputStream = conn.getInputStream();
//FilesUtils输入流输出流类(response是响应过来的数据)
response = FilesUtils.readInfo(inputStream);
runOnUiThread(new Runnable() {
public void run() {
//用runOnUiThread接收输出显示结果
tv_json.setText(response);
}
});
if (conn != null) {
conn.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
5.FilesUtils.java(输入流输出流类)
public class FilesUtils {
public static void saveInfo(OutputStream outputStream, String wenjian){
try {
outputStream.write(wenjian.getBytes());
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static String readInfo(InputStream input) {
ByteArrayOutputStream os = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
try {
while ((len = input.read(buffer))!=-1) {
os.write(buffer, 0, len);
}
byte[] data = os.toByteArray();
os.close();
input.close();
String str = new String(data);
return str;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
6.web端
请注意我在mainActivity.java中传了一个str=1323123值,下面介绍web端如何接收。
其实跟简单。
@Autowired
private BookService bookService;
@RequestMapping("/bookAll")
@ResponseBody
public Object bookAll(String str) {
System.out.println("Android端传过来的值:"+str);
List<Books> list = bookService.findAll();
return list;
}
效果图:
7.在web代码,大家也已经看到了,我返回了一个List去Android端,在Android端MainActivity.java runOnUiThread线程中我也接收了一个reponse,这个reponse就是接收的web端的值,我也用了一个tv_json.setText(reponse);显示在了界面上。请看显示的效果。
如果是个list,其实就是json数据,需要做处理,如果是普通的字符串,可直接用。
谢谢大家支持。一起学习it行业加v:zzaizhangzeng