android post请求

参考文章:http://blog.csdn.net/lotusyangjun/article/details/22292445

http://blog.csdn.net/withiter/article/details/19908679

代码如下:

package tdrhedu.com.edugame;
import android.content.Intent;
import android.graphics.Paint;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by zhaoliang on 2016/6/15.
 */
public class Login2Activity extends AppCompatActivity {
    private static final String TAG = "Login2Activity";
    Button mLogin = null;
    TextView mForgetPassword = null;
    TextView mJustSee = null;
    EditText mAccountName, mAccountPasswd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login2);

        View v = findViewById(R.id.mLoginGuide);//找到你要设透明背景的layout 的id
        v.getBackground().setAlpha(70);//0~255透明度值

        //TextView tv = (TextView)findViewById(R.id.find_password);
        //tv.setPaintFlags(tv.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);

        mLogin = (Button) findViewById(R.id.account_login);
        mLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(TAG, "click");

                String postReceiverUrl = "http://112.126.64.235:9090/company/get";
                Log.v(TAG, "postURL: " + postReceiverUrl);

                new Thread(new Runnable(){
                    @Override
                    public void run() {
                        mAccountName = (EditText)findViewById(R.id.account_name);
                        mAccountPasswd = (EditText)findViewById(R.id.account_password);
                        String username = mAccountName.getText().toString();
                        String password = mAccountPasswd.getText().toString();
                        Map<String, String> params = new HashMap<String, String>();
                        params.put("username", username);
                        params.put("password", password);
                        String result = submitPostData(params, "utf-8");
                        Log.v(TAG, "result: " + result);
                    }
                }).start();

                //Intent i = new Intent(Login2Activity.this, PannelActivity.class);
                //startActivity(i);

            }
        });

        /*mForgetPassword = (TextView) findViewById(R.id.find_password);
        mForgetPassword.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent i = new Intent(Login2Activity.this, ForgotActivity.class);
                startActivity(i);
            }
        });

        mJustSee = (TextView) findViewById(R.id.just_see);
        mJustSee.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });*/

    }

    /*
     * Function  :   发送Post请求到服务器
     * Param     :   params请求体内容,encode编码格式
     * Author    :   [email protected]
     */
    public static String submitPostData(Map<String, String> params, String encode) {

        byte[] data = getRequestData(params, encode).toString().getBytes();//获得请求体
        try {
            URL url = new URL("http://112.126.64.235:9090/company/get");
            HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
            httpURLConnection.setConnectTimeout(3000);  //设置连接超时时间
            httpURLConnection.setDoInput(true);                  //打开输入流,以便从服务器获取数据
            httpURLConnection.setDoOutput(true);                 //打开输出流,以便向服务器提交数据
            httpURLConnection.setRequestMethod("POST");   //设置以Post方式提交数据
            httpURLConnection.setUseCaches(false);        //使用Post方式不能使用缓存
            //设置请求体的类型是文本类型
            httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            //设置请求体的长度
            httpURLConnection.setRequestProperty("Content-Length", String.valueOf(data.length));
            //获得输出流,向服务器写入数据
            OutputStream outputStream = httpURLConnection.getOutputStream();
            outputStream.write(data);

            int response = httpURLConnection.getResponseCode();            //获得服务器的响应码
            if(response == HttpURLConnection.HTTP_OK) {
                InputStream inptStream = httpURLConnection.getInputStream();
                return dealResponseResult(inptStream);                     //处理服务器的响应结果
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }

    /*
     * Function  :   封装请求体信息
     * Param     :   params请求体内容,encode编码格式
     * Author    :   [email protected]
     */
    public static StringBuffer getRequestData(Map<String, String> params, String encode) {
        StringBuffer stringBuffer = new StringBuffer();        //存储封装好的请求体信息
        try {
            for(Map.Entry<String, String> entry : params.entrySet()) {
                stringBuffer.append(entry.getKey())
                        .append("=")
                        .append(URLEncoder.encode(entry.getValue(), encode))
                        .append("&");
            }
            stringBuffer.deleteCharAt(stringBuffer.length() - 1);    //删除最后的一个"&"
        } catch (Exception e) {
            e.printStackTrace();
        }
        return stringBuffer;
    }

    /*
     * Function  :   处理服务器的响应结果(将输入流转化成字符串)
     * Param     :   inputStream服务器的响应输入流
     * Author    :   [email protected]
     */
    public static String dealResponseResult(InputStream inputStream) {
        String resultData = null;      //存储处理结果
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        byte[] data = new byte[1024];
        int len = 0;
        try {
            while((len = inputStream.read(data)) != -1) {
                byteArrayOutputStream.write(data, 0, len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        resultData = new String(byteArrayOutputStream.toByteArray());
        return resultData;
    }

}

完毕。

时间: 2025-01-02 15:52:35

android post请求的相关文章

Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)

最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所帮助. 首先按照惯例先来简单了解一些AsyncHttpClient网络框架的一些知识. 1.简介 Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnect,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使用android-a

Android HttpGet() 请求简单入门实例

HttpClient httpclient = new DefaultHttpClient(); String url = "http://example.com"; List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add( new BasicNameValuePair( "param", "value" ) ); URI uri =

Android客户端请求服务器端的详细解释

Android客户端请求服务器端的详细解释 1. Android客户端与服务器端通信方式: Android与服务器通信通常采用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和post两种方式. 2. 解析服务器端返回数据的解释: (1).对于服务器端来说,返回给客户端的数据格式一般分为html.xml和json这三种格式. (2). JSON(Javascript Object Notation)是一种轻量级的数据交换格式,相比于xml这种数据交换格式来说,因为解析xml比

Android 网络请求json数据,解析json数据,生成对应的java bean类一步到位,快速开发

Android 网络请求一般都涉及到图片和JSON数据,怎样快速的请求网络JSON数据,解析JSON数据,并且一步生成自己想要的Java bean实体类?这个涉及到Android 开发效率的问题.由于接触Android 网络这方面比较多,自然就找到一些好的方法来快速开发Android 网络模块的相关内容,接下来就为大家揭晓 一步快速请求,解析JSON 数据生成对应的Java bean实体类的方法. 注:我们先把思路讲解下吧: 1.网络请求JSON数据代码可以自己写,当然我还是推荐使用网络上开源的

Android之Http通信——3.Android HTTP请求方式:HttpURLConnection

3.Android HTTP请求方式之HttpURLConnection 引言: 好了,前两节我们已经对HTTP协议进行了学习,相信看完前两节的朋友对HTTP协议相比之前 应该更加熟悉吧,好吧,学了要用,相信很多人都知道Android中HTTP的两种最基本的请求方式 他们分别是:HttpURLConnection和HttpClient,当然了解了最基本的两个后,我们实际开发中 可能并不会自己去慢慢写网络请求的代码,毕竟根据不同的web端接口,我们需要组织不同的数据 内容上传,这明显会增加我们的代

Android Http请求

Android HTTP请求封装代码 /** * This class is the Utils of other classes. */ public class HttpUtil { /** 变量/常量说明 */ private static final String TAG = "HttpUtils"; /** 超时时间 */ private static int mTimeOut = 20000; /** 私钥密码 */ /** 使用协议 */ private static f

Android—构建安全的Android客户端请求,避免非法请求

今天通过实例来介绍一下如何构建安全的Android客户端请求,避免非法请求: [0分下载Demo]

【Java&amp;Android开源库代码剖析】のandroid-async-http(如何设计一个优雅的Android网络请求框架,同时支持同步和异步请求)开篇

在<[Java&Android开源库代码剖析]のandroid-smart-image-view>一文中我们提到了android-async-http这个开源库,本文正式开篇来详细介绍这个库的实现,同时结合源码探讨如何设计一个优雅的Android网络请求框架.做过一段时间Android开发的同学应该对这个库不陌生,因为它对Apache的HttpClient API的封装使得开发者可以简洁优雅的实现网络请求和响应,并且同时支持同步和异步请求. 网络请求框架一般至少需要具备如下几个组件:1

Android 网络请求及数据处理

Android 网络请求: 1.Volley   http://blog.csdn.net/t12x3456/article/details/9221611 2.Android-Async-Http   http://www.cnblogs.com/angeldevil/p/3729808.html Android Json 处理: 1.Gson 2.fast-json

浅论Android网络请求库——android-async-http

浅论Android网络请求库——android-async-http Android应用中使用AsyncHttpClient来异步网络数据