java安卓端_JAVA服务端android客户端如何通信

展开全部

一、HTTP请求(APACHE的e5a48de588b63231313335323631343130323136353331333337396263HttpClient实现)

服务器端,就是普通的servlet、Strutus2就可以

移动端

protected static String get(String url, List params) {

String resultMsg;

// 设置http请求配置

HttpParams parms = new BasicHttpParams();

parms.setParameter("charset", HTTP.UTF_8);

// 配置连接超时

HttpConnectionParams.setConnectionTimeout(parms, 10 * 1000);

// 设置请求超时

HttpConnectionParams.setSoTimeout(parms, 15 * 1000);

// 实例化HttpClient

HttpClient httpclient = new DefaultHttpClient(parms);

// 实例化HttpGet

HttpGet httpget = new HttpGet(url);

// 设置请求头

httpget.addHeader("Content-Type", "application/json");

httpget.addHeader("charset", HTTP.UTF_8);

try {

if (params.size() > 0)

url = url + "?" + URLEncodedUtils.format(params, HTTP.UTF_8);

HttpResponse resp = httpclient.execute(httpget);

int statusCode = resp.getStatusLine().getStatusCode();

if (statusCode == HttpStatus.SC_OK) {

StringBuffer result = getResponse(resp);

resultMsg = result.toString();

} else {

resultMsg = "连接异常";

}

} catch (Exception e) {

resultMsg = "连接异常";

} finally {

// 关闭get

httpget.abort();

// 关闭连接 ,释放资源

httpclient.getConnectionManager().shutdown();

}

return resultMsg;

}

protected static String post(String uri, Object params) {

String resultMsg;

// 设置http请求配置

HttpParams hp = new BasicHttpParams();

hp.setParameter("charset", HTTP.UTF_8);

// 配置连接超时

HttpConnectionParams.setConnectionTimeout(hp, 10 * 1000);

HttpConnectionParams.setSoTimeout(hp, 15 * 1000);

// 实例化HttpClient

HttpClient httpclient = new DefaultHttpClient(hp);

// 实例化HttpPost请求

HttpPost httppost = new HttpPost(uri);

// 设置头信息

httppost.addHeader("Content-Type", "application/json");

httppost.addHeader("charset", HTTP.UTF_8);

try {

// 将参数进行json化

ObjectMapper mapper = new ObjectMapper();

String jsonStr = mapper.writeValueAsString(params);

Log.i(TAG, "URI=" + uri + ",BEAN=" + jsonStr);

// 定义消息实体

StringEntity se = new StringEntity(jsonStr, HTTP.UTF_8);

httppost.setEntity(se);

// 通信

HttpResponse resp = httpclient.execute(httppost);

int statusCode = resp.getStatusLine().getStatusCode();

Log.i(TAG, "StatusCode=" + statusCode);

if (statusCode == HttpStatus.SC_OK) {

StringBuffer result = getResponse(resp);

resultMsg = result.toString();

} else {

resultMsg = "连接异常";

}

} catch (Exception e) {

e.printStackTrace();

resultMsg = "连接异常";

} finally {

// 关闭get

httppost.abort();

// 关闭连接 ,释放资源

httpclient.getConnectionManager().shutdown();

}

Log.i(TAG, resultMsg);

return resultMsg;

}

二、SOCKET连接

服务器端:

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

public class service_java_test {

public static void main(String[] args) throws IOException {

ServerSocket server = new ServerSocket(10000); //绑定的端口号

Socket socket = server.accept(); //连接不成功以至于下一行的"连接成功"

//在调试区显示不出来

System.out.println("连接成功");

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

PrintWriter out = new PrintWriter(socket.getOutputStream());

while (true) {

String msg = in.readLine();

System.out.println(msg);

out.println("Server received " + msg); //向接收方发送已接受到了的语句

out.flush();

if (msg.equals("bye")) { //若接收到"bye"则break

break;

}

}

socket.close();

}

}

安卓客户端:

package com.example.t4_android;

import java.net.Socket;

import android.app.Activity;

import android.os.Bundle;

import android.widget.TextView;

public class MainActivity extends Activity {

private TextView myTextView;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

myTextView = (TextView) findViewById(R.id.textView1);

Thread t = new Thread(new Runnable(){

public void run(){

try {

Socket sk = new Socket("192.168.253.1", 10000);//绑定套接字,这一行一直执行不成功

//以至于下一行在安卓页面的TextView上

//不显示“已连接”的字样

//"192.168.253.1"是我利用DOS命令查找

//的本机IP

myTextView.setText("已连接");

} catch (Exception e) {

e.printStackTrace();

}

}

});

t.start();

}

}

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值