GETとPOST提出データ
GET方式でサーバー側にデータを提出する
ステップ: 1、提出したいパラメータセットをURLアドレスの後ろにつづり合わせる:
http://192.168.22.136:8080/web/servlet/LoginServlet?username=123&password=1233
ウェブページGETで一回提出して、HttpWatchソフトでブラウザの提出内容を監視してもいいです.詳細なGET内容が見られます.
同様にPOST方式で提出する場合もPOST提出時の内容を得ることができます. 短所:
1、提出データの長さには制限があります.
最大長さ4 kb、windowsでデータを提出する時の最大長さは1 kbです.
2、安全ではない
長所:コードが簡単
コード:
業務シーン:
1、ユーザ登録
2、ファイルアップロード
ステップ: 1、要求ヘッダ情報POST、Conteet Lengthを設定する:
conn.set Request Property(「Content-Type」、「appication/x-wn-form-urlencoded」);
//追加すべき二つの要求ヘッダ情報
conn.set Request Property(「Conteet Length」、data.length()+「」);
conn.set Request Method(「POST」);
2、設定はサーバにデータを提出する:
conn.set DoOutput(true);
//サーバにデータを書き込む
conn.get OutputStream().write(data.getByttes();
短所:
1、コードが複雑です
利点:
1、安全
2、大量のデータを提出する
コード:
POST方式でデータを提出する時の中国語の文字化けの解決方法
クライアントとサーバの両方の文字セットを使ってエンコードします.
UTF-8、またはGBKは統一されます.
GET方式でデータを提出する中国語の文字化けの解決方法
URLEncoder.encodeを使ってurl符号化を行います.
String path="http://192.168.22.136:8080/web/servlet/LoginServlet?username=“+URLEncoder.encode”UTF-8"+&password=“+URLEncoder.encode”UTF-8";
ステップ: 1、提出したいパラメータセットをURLアドレスの後ろにつづり合わせる:
http://192.168.22.136:8080/web/servlet/LoginServlet?username=123&password=1233
ウェブページGETで一回提出して、HttpWatchソフトでブラウザの提出内容を監視してもいいです.詳細なGET内容が見られます.
同様にPOST方式で提出する場合もPOST提出時の内容を得ることができます. 短所:
1、提出データの長さには制限があります.
最大長さ4 kb、windowsでデータを提出する時の最大長さは1 kbです.
2、安全ではない
長所:コードが簡単
コード:
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import com.itheima.htmlview.utils.StreamTools;
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText et_qq;
private EditText et_pwd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_qq = (EditText) findViewById(R.id.et_qq);
et_pwd = (EditText) findViewById(R.id.et_pwd);
}
public void login(View view){
final String qq = et_qq.getText().toString().trim();
final String pwd = et_pwd.getText().toString().trim();
if(TextUtils.isEmpty(qq) || TextUtils.isEmpty(pwd)){
Toast.makeText(this, "qq ", 0).show();
return;
}else{
new Thread(){
public void run() {
try {
// URL
String path = "http://192.168.22.136:8080/web/servlet/LoginServlet?username="+qq+"&password="+pwd;
// 1、
// (1) URL
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// (2)
conn.setRequestMethod("GET");
conn.setConnectTimeout(3000);
// 2、
// (1) :200 ok,404 、503、509
int code = conn.getResponseCode();
if(code == 200){
// (2) ,
InputStream is = conn.getInputStream();
String result = StreamTools.readStream(is);
System.out.println("---------"+ result);
}
} catch (Exception e) {
e.printStackTrace();
}
};
}.start();
}
}
}
public class StreamTools {
/**
*
* @param is
* @return
*/
public static String readStream(InputStream is){
try {
byte[] buffer = new byte[1024];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
StringBuilder sb = new StringBuilder();
int len = -1;
while((len = is.read(buffer)) != -1){
baos.write(buffer, 0, len);
}
return baos.toString();
} catch (Exception e) {
return "";
}
}
}
POST方式でデータを提出する(ポイント)業務シーン:
1、ユーザ登録
2、ファイルアップロード
ステップ: 1、要求ヘッダ情報POST、Conteet Lengthを設定する:
conn.set Request Property(「Content-Type」、「appication/x-wn-form-urlencoded」);
//追加すべき二つの要求ヘッダ情報
conn.set Request Property(「Conteet Length」、data.length()+「」);
conn.set Request Method(「POST」);
2、設定はサーバにデータを提出する:
conn.set DoOutput(true);
//サーバにデータを書き込む
conn.get OutputStream().write(data.getByttes();
短所:
1、コードが複雑です
利点:
1、安全
2、大量のデータを提出する
コード:
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import com.itheima.htmlview.utils.StreamTools;
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText et_qq;
private EditText et_pwd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_qq = (EditText) findViewById(R.id.et_qq);
et_pwd = (EditText) findViewById(R.id.et_pwd);
}
public void login(View view){
final String qq = et_qq.getText().toString().trim();
final String pwd = et_pwd.getText().toString().trim();
if(TextUtils.isEmpty(qq) || TextUtils.isEmpty(pwd)){
Toast.makeText(this, "qq ", 0).show();
return;
}else{
new Thread(){
public void run() {
try {
String path = "http://192.168.22.136:8080/web/servlet/LoginServlet";
String data = "username="+qq+"&password="+pwd;
// 1、
// (1) URL
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// (2)
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//
conn.setRequestProperty("Content-Length", data.length()+"");
conn.setRequestMethod("POST");
conn.setConnectTimeout(3000);
//
conn.setDoOutput(true);
//
conn.getOutputStream().write(data.getBytes());
// 2、
// (1) :200 ok,404 、503、509
int code = conn.getResponseCode();
if(code == 200){
// (2) ,
InputStream is = conn.getInputStream();
String result = StreamTools.readStream(is);
System.out.println("---------"+ result);
}
} catch (Exception e) {
e.printStackTrace();
}
};
}.start();
}
}
}
文字化けの解決POST方式でデータを提出する時の中国語の文字化けの解決方法
クライアントとサーバの両方の文字セットを使ってエンコードします.
UTF-8、またはGBKは統一されます.
GET方式でデータを提出する中国語の文字化けの解決方法
URLEncoder.encodeを使ってurl符号化を行います.
String path="http://192.168.22.136:8080/web/servlet/LoginServlet?username=“+URLEncoder.encode”UTF-8"+&password=“+URLEncoder.encode”UTF-8";