安卓请求java后台方式,java后台接收android客户端通过http方式发送的数据

files = new HashMap() ;

files.put ( "2.png" , new File("D:\\2.png")) ;

files.put ( "1.png" , new File("D:\\1.png")) ;

try

{

String str = post( actionUrl ,params , files ) ;

System.out.println ( "str--->>>" + str ) ;

}

catch ( Exception e )

{

}

}

public static String post( String actionUrl ,Map < String , String > params , Map < String , File > files )

throws IOException

{

String BOUNDARY = java.util.UUID.randomUUID ( ).toString ( ) ;

String PREFIX = "--" , LINEND = "\r\n" ;

String MULTIPART_FROM_DATA = "multipart/form-data" ;

String CHARSET = "UTF-8" ;

URL uri = new URL ( actionUrl ) ;

HttpURLConnection conn = ( HttpURLConnection ) uri

.openConnection ( ) ;

conn.setReadTimeout ( 5 * 1000 ) ; // 缓存的最长时间

conn.setDoInput ( true ) ;// 允许输入

conn.setDoOutput ( true ) ;// 允许输出

conn.setUseCaches ( false ) ; // 不允许使用缓存

conn.setRequestMethod ("POST") ;

conn.setRequestProperty ( "connection" , "keep-alive" ) ;

conn.setRequestProperty ( "Charsert" , "UTF-8" ) ;

conn.setRequestProperty ( "Content-Type" , MULTIPART_FROM_DATA+ ";boundary=" + BOUNDARY ) ;

// 首先组拼文本类型的参数

StringBuilder sb = new StringBuilder ( ) ;

for ( Map.Entry < String , String > entry : params.entrySet ( ) )

{

sb.append ( PREFIX ) ;

sb.append ( BOUNDARY ) ;

sb.append ( LINEND ) ;

sb.append ( "Content-Disposition: form-data; name=\""

+ entry.getKey ( ) + "\"" + LINEND ) ;

sb.append ( "Content-Type: text/plain; charset="

+ CHARSET + LINEND ) ;

sb.append ( "Content-Transfer-Encoding: 8bit" + LINEND ) ;

sb.append ( LINEND ) ;

sb.append ( entry.getValue ( ) ) ;

sb.append ( LINEND ) ;

}

DataOutputStream outStream = new DataOutputStream (conn.getOutputStream ( ) ) ;

outStream.write ( sb.toString ( ).getBytes ( ) ) ;

// 发送文件数据

if ( files != null )

for ( Map.Entry < String , File > file : files.entrySet ( ) )

{

StringBuilder sb1 = new StringBuilder ( ) ;

sb1.append ( PREFIX ) ;

sb1.append ( BOUNDARY ) ;

sb1.append ( LINEND ) ;

sb1.append ( "Content-Disposition: form-data; name=\"file\"; filename=\""

+ file.getKey ( ) + "\"" + LINEND ) ;

sb1.append ( "Content-Type: application/octet-stream; charset="

+ CHARSET + LINEND ) ;

sb1.append ( LINEND ) ;

outStream.write ( sb1.toString ( ).getBytes ( ) ) ;

InputStream is = new FileInputStream (

file.getValue ( ) ) ;

byte [ ] buffer = new byte [ 1024 ] ;

int len = 0 ;

while ( ( len = is.read ( buffer ) ) != - 1 )

{

outStream.write ( buffer , 0 , len ) ;

}

is.close ( ) ;

outStream.write ( LINEND.getBytes ( ) ) ;

}

// 请求结束标志

byte [ ] end_data = ( PREFIX + BOUNDARY + PREFIX + LINEND ).getBytes ( ) ;

outStream.write ( end_data ) ;

outStream.flush ( ) ;

// 得到响应码

int res = conn.getResponseCode ( ) ;

InputStream in = conn.getInputStream ( ) ;

StringBuilder sb2=null;

if ( res == 200 )

{

int ch ;

sb2 = new StringBuilder ( ) ;

while ( ( ch = in.read ( ) ) != - 1 )

{

sb2.append ( ( char ) ch ) ;

}

}

outStream.close ( ) ;

conn.disconnect ( ) ;

return new String(sb2.toString().getBytes("ISO-8859-1"),"UTF-8") ;

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值