android app与服务器交互

package mydemo.mycom.demo2.service;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import mydemo.mycom.demo2.utils.StreamTools;

/**
 * Created by Administrator on 2015/5/20.
 */
public class NetService {

    //使用URL的Get 方式请求服务器
    public static String loginByGet(String username, String password) {
        try {
            String path = "http://192.168.1.110:1010/UserInfo/Login?username=" + username + "&password=" + password;
            URL url = new URL(path);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setConnectTimeout(5000);
            conn.setRequestMethod("GET");
            int code = conn.getResponseCode();
            if (code == 200) {
                //请求成功
                InputStream is = conn.getInputStream();
                String result = StreamTools.readInputStream(is);
                return result;
            } else {
                //请求失败
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    //使用URL的Post 方式请求服务器
    public static String loginByPost(String username, String password) {
        try {
            String path = "http://192.168.1.110:1010/UserInfo/Login";
            URL url = new URL(path);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setConnectTimeout(5000);
            conn.setRequestMethod("POST");
            String data = "username=" + username + "&password=" + password;

            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            conn.setRequestProperty("Content-Length", data.length() + "");

            //post 的方式 实际上是浏览器把数据 写给了服务器
            conn.setDoInput(true);
            OutputStream os = conn.getOutputStream();
            os.write(data.getBytes());
            int code = conn.getResponseCode();
            if (code == 200) {
                //请求成功
                InputStream is = conn.getInputStream();
                String result = StreamTools.readInputStream(is);
                return result;
            } else {
                //请求失败
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    //使用HttpClient的Get 方式请求服务器 (HttpClient 过时)
    public static String loginByClientGet(String username, String password) {
        try {
            HttpClient client = new DefaultHttpClient();
            String path = "http://192.168.1.110:1010/UserInfo/Login?username=" + username + "&password=" + password;
            HttpGet httpget = new HttpGet(path);
            HttpResponse response = client.execute(httpget);
            int code = response.getStatusLine().getStatusCode();
            if (code == 200) {
                //请求成功
                InputStream is = response.getEntity().getContent();
                String result = StreamTools.readInputStream(is);
                return result;
            } else {
                //请求失败
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    //使用HttpClient的Post 方式请求服务器 (HttpClient 过时)
    public static String loginByClientPost(String username, String password) {
        try {
            HttpClient client = new DefaultHttpClient();
            String path = "http://192.168.1.110:1010/UserInfo/Login";
            HttpPost httppost = new HttpPost(path);
            //指定要提交的数据实体
            List<NameValuePair> list = new ArrayList<NameValuePair>();
            list.add(new BasicNameValuePair("username", username));
            list.add(new BasicNameValuePair("password", password));
            httppost.setEntity(new UrlEncodedFormEntity(list, "UTF_8"));
            HttpResponse response = client.execute(httppost);
            int code = response.getStatusLine().getStatusCode();
            if (code == 200) {
                //请求成功
                InputStream is = response.getEntity().getContent();
                String result = StreamTools.readInputStream(is);
                return result;
            } else {
                //请求失败
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}

//将InputStream 转为 String

package mydemo.mycom.demo2.utils;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;

public class StreamTools {

    //InputStream 转为 String
    public static String readInputStream(InputStream is)
    {
        try
        {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            int len =0;
            byte[] buffer = new byte[1024];
            while((len=is.read(buffer))!=-1)
            {
                baos.write(buffer,0,len);
            }
            is.close();
            baos.close();

            byte[] result = baos.toByteArray();
            String temp = new String(result);
            return temp;
        }catch (Exception e)
        {
            e.printStackTrace();
            return null;
        }

    }

}
时间: 2024-10-12 18:10:35

android app与服务器交互的相关文章

android客户端与服务器交互数据(基于SAOP协议的远程调用标准,通过webservice可以将不同操作系统平台,不同语言,不同技术整合)

在PC机器java客户端中,需要一些库,比如XFire,Axis2,CXF等等来支持访问WebService,但是这些库并不适合我们资源有限的android手机客户端,做过JAVA ME的人都知道有KSOAP这个第三方的类库,可以帮助我们获取服务器端webService调用,当然KSOAP已经提供了基于android版本的jar包 首先下载KSOAP包:ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar包 然后新建android项目 以

Android与PHP服务器交互

转自:http://blog.csdn.net/ab_ba/article/details/7912424 服务器端:server.php [html] view plaincopy 1 <?php 2         include('dbconfig.php'); 3 4 5         $address = $_POST['address']; 6         $longitude = $_POST['longitude']; 7         $latitude = $_POS

android 客户端与服务器交互 UDP方式。

客户端代码: /** * 开启UDP发送 * * @author gzh */ public class Client implements Runnable { @Override public void run() { try { wifiGPSInfo = new WifiGPSInfo(); wifiGPSInfo.setStatusCode("32");// 签到 Intent intent = getIntent(); // 用于激活它的意图对象 String acc =

java攻城狮之路(Android篇)--与服务器交互

一.图片查看器和网页源码查看器 在输入地址的是不能输入127.0.0.1 或者是 localhost.ScrollView :可以看成一个滚轴 可以去包裹很多的控件在里面 练习1(图片查看器): package com.shellway.imagelooker; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedUR

Android数据与服务器交互的GET,POST,HTTPGET,HTTPPOST的使用

Android有这几种方式,可以提交数据到服务器,他们是怎么使用的呢,这里我们来探讨一下. 这里的例子用的都是提交客户端的用户名及密码,同时本节用到的StreamTools.readInputStream(is);作用是把输入流转化为字符串,是一个公共类.我在前面介绍过了.http://www.cnblogs.com/fengtengfei/p/3969520.html,这里就不在重复的说明了. 第一种:GET 关键部分是: 首先我们用URL包装访问的路径,由于是get请求,在学习javaWEB

Android客户端与服务器交互中的token

学习Token Token是什么? Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码. Token的引入-- Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生 使用Token的目的-- Token的目的是为了减轻服务器

android客户端与服务器交互,在模拟器能够得到服务器的响应,但是在真机得不到服务器的响应,请问怎么回事?程序如下:

============问题描述============ private static final String URL = " "; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) this.findViewById(R.id

android如何与服务器交互?

============问题描述============ 是用httpclient  还是socket  还是webservice? 倒底哪种好用,哪种最常用? 有没有好的框架介绍一下? ============解决方案1============ 1.afinal 2.volley 个人觉得不错的两个框架!当然也可以自己封装.如果对以上两个框架感兴趣,可以下源码研究.都是开源的.也可以在他们框架的基础上改进. 对Volley Google I/O开源框架 进行封装http://blog.csdn

Android客户端与服务器交互方式-小结

最近的Android项目开发过程中一个问题困扰自己很长时间,Android客户端与服务器交互有几种方式,最常见的就是webservices和json.要在Android手机客户端与pc服务器交互,需要满足下面几种条件:跨平台.传输数据格式标准.交互方便. 为了与服务器通讯其实无非就两种协议HTTP和TCP,TCP的学习Socket,HTTP的话熟悉一下HTTP协议和相关Java API.而下面的几种方式就是从这两种协议扩展出来的:webservices soap.SSH的JSON(可参考:该链接