import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class TestHttpPost {
public static void main(String[] args) throws IOException {
//創建URL對象
URL url = new URL("http://127.0.0.1:8080/student/login.php");
//通過URL對象獲取一個HttpURLConnection對象
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("POST");//設置請求方式爲POST
conn.setDoOutput(true);//設置允許輸出數據到服務器
//設置請求頭信息
conn.setRequestProperty("content-type", "application/x-www-form-urlencoded");
//獲取輸出流 通過輸出流將POST請求提交的數據發送到服務器端
String data = "username=admin&password=admin";
//獲取輸出流對象 通過輸出流將數據輸出到服務器端
OutputStream out = conn.getOutputStream();
out.write(data.getBytes());//數據寫出 輸出數據的操作 必須放置在讀取數據前
//獲取輸入流 通過該流可以獲取服務器端響應信息
InputStream in = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
//判斷響應狀態碼
if(conn.getResponseCode() == 200){
System.out.println("服務器請求處理成功,返回的響應:");
String msg = null;
while((msg=reader.readLine())!=null){
System.out.println(msg);
}
}
//斷開連接
conn.disconnect();
}
}
##################################################
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.net.URLEncoder;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.Toast;
- public class MainActivity extends Activity {
- private EditText et_username;
- private EditText et_password;
- private Button bt_show;
- String result="";
- /**post請求URL地址*/
- private static final String URL="";
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- init();
- bt_show.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- //android4.0後的新的特性,網絡數據請求時不能放在主線程中。
- //9、使用線程執行訪問服務器,獲取返回信息後通知主線程更新UI或者提示信息。
- final Handler handler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- if (msg.what == 1) {
- //8、提示讀取結果
- Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show();
- }
- }
- };
- // 啓動線程來執行任務
- new Thread() {
- public void run() {
- //請求網絡
- loginByPost(et_username.getText().toString(), et_password.getText().toString());
- Message m = new Message();
- m.what = 1;
- // 發送消息到Handler
- handler.sendMessage(m);
- }
- }.start();
- }
- });
- }
- private void init(){
- et_username=(EditText)findViewById(R.id.et_username);
- et_password=(EditText)findViewById(R.id.et_password);
- bt_show=(Button)findViewById(R.id.bt_login);
- }
- /**
- * 請求後臺,判斷登錄結果。
- * @param username
- * @param password
- */
- public void loginByPost(String username, String password) {
- try {
- //1、根據地址創建URL對象(網絡訪問的url)
- URL url = new URL(URL);
- //2、url.openConnection()打開網絡鏈接
- HttpURLConnection conn = (HttpURLConnection)url.openConnection();
- //3、設置請求的方式
- conn.setRequestMethod("POST");
- conn.setDoInput(true);//發送POST請求必須設置允許輸出
- conn.setDoOutput(true);//發送POST請求必須設置允許輸入
- //4、設置請求的頭
- conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
- conn.setRequestProperty("Charset", "utf-8");
- String data = "username=" + URLEncoder.encode(username, "UTF-8")
- + "&password=" + URLEncoder.encode(password, "UTF-8");//傳遞的數據
- conn.setRequestProperty("Content-Length",String.valueOf(data.getBytes().length));
- //5、獲取輸出流
- OutputStream os = conn.getOutputStream();
- os.write(data.getBytes());
- os.flush();
- //6、獲取響應的輸入流對象
- InputStreamReader is = new InputStreamReader(conn.getInputStream());
- BufferedReader bufferedReader = new BufferedReader(is);
- StringBuffer strBuffer = new StringBuffer();
- String line = null;
- //7、讀取服務器返回信息
- while ((line = bufferedReader.readLine()) != null) {
- strBuffer.append(line);
- }
- result = strBuffer.toString();
- //8、關閉InputStream、關閉http連接
- is.close();
- conn.disconnect();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }