Java代碼
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名注冊、雅安服務器托管、營銷軟件、網站建設、白銀區網站維護、網站推廣。
/* 注意get和post請求的發送區別
* 1、創建HttpGet(或HttpPost)對象,將要請求的URL通過構造方法傳入HttpGet(或HttpPost)對象中;
2、使用DefaultHttpClient類的execute方法發送HTTP GET或HTTP POST 請求,并返回HttpResponse對象;
3、通過HttpResponse接口的getEntity方法返回響應信息。
* */
public class TestHttpActivity extends Activity {
private Button btn_get;
private Button btn_post;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn_get=(Button)findViewById(R.id.btn_get);
btn_post=(Button)findViewById(R.id.btn_post);
btn_get.setOnClickListener(listener);
btn_post.setOnClickListener(listener);
}
private OnClickListener listener=new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_post:
Log.i("TestHttpActivity", "ok");
DefaultHttpClient client = new DefaultHttpClient();
/**NameValuePair是傳送給服務器的請求參數 param.get("name") **/
ListNameValuePair list = new ArrayListNameValuePair();
NameValuePair pair1 = new BasicNameValuePair("name", "name0001");
NameValuePair pair2 = new BasicNameValuePair("age", "age0001");
list.add(pair1);
list.add(pair2);
UrlEncodedFormEntity entity=null;
try {
/**設置編碼 **/
entity = new UrlEncodedFormEntity(list,"UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/**新建一個post請求**/
HttpPost post = new HttpPost("");
post.setEntity(entity);
HttpResponse response=null;
String strResult="";
try {
/**客服端向服務器發送請求**/
response = client.execute(post);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/**請求發送成功,并得到響應**/
if(response.getStatusLine().getStatusCode()==200){
try {
/**讀取服務器返回過來的json字符串數據**/
strResult = EntityUtils.toString(response.getEntity());
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JSONObject jsonObject = null;
try {
/**把json字符串轉換成json對象**/
jsonObject = getJSON(strResult);
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String names="";
try {
/**
* jsonObject.getString("code") 取出code
* 比如這里返回的json 字符串為 [code:0,msg:"ok",data:[list:{"name":1},{"name":2}]]
* **/
/**得到data這個key**/
String data=jsonObject.getString("data");
/**把data下的數據轉換成json對象**/
JSONObject jDat = new JSONObject(data);
/**判斷data對象下的list是否存在**/
if(jDat.get("list")!=null){
/**把list轉換成jsonArray對象**/
JSONArray jarr = jDat.getJSONArray("list");
/**循環list對象**/
for (int i = 0; i jarr.length(); i++) {
/** **/
JSONObject jsono = (JSONObject) jarr.get(i);
/**取出list下的name的值 **/
names=names+jsono.getString("name");
}
}
Toast.makeText(TestHttpActivity.this, "code:"+jsonObject.getString("code")+"name:"+names, Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else Toast.makeText(TestHttpActivity.this, "POST提交失敗", Toast.LENGTH_SHORT).show();
break;
case R.id.btn_get:
DefaultHttpClient client1 = new DefaultHttpClient();
/**NameValuePair是傳送給服務器的請求參數 param.get("name") **/
UrlEncodedFormEntity entity1=null;
/**新建一個get請求**/
HttpGet get = new HttpGet("");
HttpResponse response1=null;
String strResult1="";
try {
/**客服端向服務器發送請求**/
response1 = client1.execute(get);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/**請求發送成功,并得到響應**/
if(response1.getStatusLine().getStatusCode()==200){
try {
/**讀取服務器返回過來的json字符串數據**/
strResult1 = EntityUtils.toString(response1.getEntity());
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JSONObject jsonObject1 = null;
try {
/**把json字符串轉換成json對象**/
jsonObject1 = getJSON(strResult1);
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String names="";
try {
/**
* jsonObject.getString("code") 取出code
* 比如這里返回的json 字符串為 [code:0,msg:"ok",data:[list:{"name":1},{"name":2}]]
* **/
/**得到data這個key**/
String data=jsonObject1.getString("data");
/**把data下的數據轉換成json對象**/
JSONObject jDat1 = new JSONObject(data);
/**判斷data對象下的list是否存在**/
if(jDat1.get("list")!=null){
/**把list轉換成jsonArray對象**/
JSONArray jarr1 = jDat1.getJSONArray("list");
/**循環list對象**/
for (int i = 0; i jarr1.length(); i++) {
/** **/
JSONObject jsono = (JSONObject) jarr1.get(i);
/**取出list下的name的值 **/
names=names+jsono.getString("name");
}
}
Toast.makeText(TestHttpActivity.this, "get請求: code:"+jsonObject1.getString("code")+"name:"+names, Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else Toast.makeText(TestHttpActivity.this, "get提交失敗", Toast.LENGTH_SHORT).show();
break;
}
}
};
public JSONObject getJSON(String sb) throws JSONException {
return new JSONObject(sb);
}
}
不想一點一點寫了,粘貼給你吧
使用 HttpWebRequest 向網站提交數據
HttpWebRequest 是 .net 基類庫中的一個類,在命名空間 System.Net 下面,用來使用戶通過 HTTP 協議和服務器交互。
HttpWebRequest 對 HTTP 協議進行了完整的封裝,對 HTTP 協議中的 Header, Content, Cookie 都做了屬性和方法的支持,很容易就能編寫出一個模擬瀏覽器自動登錄的程序。
程序使用 HTTP 協議和服務器交互主要是進行數據的提交,通常數據的提交是通過 GET 和 POST 兩種方式來完成,下面對這兩種方式進行一下說明:
1. GET 方式。 GET 方式通過在網絡地址附加參數來完成數據的提交,比如在地址 中,前面部分 表示數據提交的網址,后面部分 hl=zh-CN 表示附加的參數,其中 hl 表示一個鍵(key), zh-CN 表示這個鍵對應的值(value)。程序代碼如下:
HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "" );
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
//在這里對接收到的頁面內容進行處理
}
2. POST 方式。 POST 方式通過在頁面內容中填寫參數的方法來完成數據的提交,參數的格式和 GET 方式一樣,是類似于 hl=zh-CNnewwindow=1 這樣的結構。程序代碼如下:
string param = "hl=zh-CNnewwindow=1";
byte[] bs = Encoding.ASCII.GetBytes(param);
HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "" );
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = bs.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse wr = req.GetResponse())
{
//在這里對接收到的頁面內容進行處理
}
在上面的代碼中,我們訪問了 的網址,分別以 GET 和 POST 方式提交了數據,并接收了返回的頁面內容。然而,如果提交的參數中含有中文,那么這樣的處理是不夠的,需要對其進行編碼,讓對方網站能夠識別。
3. 使用 GET 方式提交中文數據。 GET 方式通過在網絡地址中附加參數來完成數據提交,對于中文的編碼,常用的有 gb2312 和 utf8 兩種,用 gb2312 方式編碼訪問的程序代碼如下:
Encoding myEncoding = Encoding.GetEncoding("gb2312");
string address = "?" + HttpUtility.UrlEncode("參數一", myEncoding) + "=" + HttpUtility.UrlEncode("值一", myEncoding);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(address);
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
//在這里對接收到的頁面內容進行處理
}
在上面的程序代碼中,我們以 GET 方式訪問了網址 ,傳遞了參數“參數一=值一”,由于無法告知對方提交數據的編碼類型,所以編碼方式要以對方的網站為標準。常見的網站中, (百度)的編碼方式是 gb2312, (谷歌)的編碼方式是 utf8。
4. 使用 POST 方式提交中文數據。 POST 方式通過在頁面內容中填寫參數的方法來完成數據的提交,由于提交的參數中可以說明使用的編碼方式,所以理論上能獲得更大的兼容性。用 gb2312 方式編碼訪問的程序代碼如下:
Encoding myEncoding = Encoding.GetEncoding("gb2312");
string param = HttpUtility.UrlEncode("參數一", myEncoding) + "=" + HttpUtility.UrlEncode("值一", myEncoding) + "" + HttpUtility.UrlEncode("參數二", myEncoding) + "=" + HttpUtility.UrlEncode("值二", myEncoding);
byte[] postBytes = Encoding.ASCII.GetBytes(param);
HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "" );
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded;charset=gb2312";
req.ContentLength = postBytes.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse wr = req.GetResponse())
{
//在這里對接收到的頁面內容進行處理
}
從上面的代碼可以看出, POST 中文數據的時候,先使用 UrlEncode 方法將中文字符轉換為編碼后的 ASCII 碼,然后提交到服務器,提交的時候可以說明編碼的方式,用來使對方服務器能夠正確的解析。
以上列出了客戶端程序使用 HTTP 協議與服務器交互的情況,常用的是 GET 和 POST 方式。現在流行的 WebService 也是通過 HTTP 協議來交互的,使用的是 POST 方法。與以上稍有所不同的是, WebService 提交的數據內容和接收到的數據內容都是使用了 XML 方式編碼。所以, HttpWebRequest 也可以使用在調用 WebService 的情況下。
驗證碼輸入錯誤,就已經很明確了
你post過去的驗證碼和你請求頁面時候的驗證碼是不一樣的
所以請檢測你取驗證碼的方法
Private Sub Command1_Click() ReferForm "WebBrowser1", 2, "message", Text1.Text End Sub Private Sub Command2_Click() ReferForm "WebBrowser1", 8, "submit" End Sub Private Sub Form_Load() WebBrowser1.Navigate (" ") End Sub '************************************************************************* '**函 數 名:ReferForm '**中文意譯:表單提交 '**輸 入:ByVal WebbrowserA(String) - webbrowser控件名 '** :ByVal FormType(Integer) - 集合 表單類型 '** Text = 0; password = 1; textarea = 2; Hidden = 3; CheckBox = 4; submit = 8; button = 9 '** :Optional FormName(String) - 表單名[可選] '** :Optional Value(String = "") - 表單值[可選] '**輸 出:無 '**功能描述: '** : '**作 者:最恨VB '**日 期:2008-01-31 07:46:14 '************************************************************************* Sub ReferForm(ByVal Webbrowser$, ByVal FormType%, Optional FormName$, Optional Value$ = "") If FormType 0 Or FormType 9 Then Exit Sub End If Dim objDoc, objTag Set objDoc = Me.Controls(Webbrowser).Document For i = 0 To objDoc.All.length - 1 Select Case UCase$(objDoc.All(i).tagName) Case "INPUT" Set objTag = objDoc.All(i) Select Case FormType Case 0, 1 If objTag.Name = FormName Then objTag.Value = Value End If Case 3 Case 4 If objTag.Name = FormName Then objTag.Click End If Case 8 If objTag.Type = FormName Then objTag.Click End If Case 9 If objTag.Typ
圖有點模糊。
服務器端要有方法接收,接收的參數要看方法的定義。
Controller A里面假設有這個get Action
httppost
function get(frm as formcollection) as actionresult
dim a as string=frm("keyword")
return content(a)
end function
頁面View 中
@Using FormBegin("get","A","POST")
@div
input name="keyword" type="text"/
Input type="submit" value="提交"/
end using
你在頁面上點擊按鈕“提交”后,就會把表單的中keyword文本框的內容賦值給a.
這里我用的是MVC..前端用的VB Razor.
你不用程序的情況能不能用TAB切換焦點。如果這樣不行的話你用程序控件是沒用的。
或都直接對第二個編輯框發送消息。
新聞標題:關于vbnetpost的信息
當前鏈接:http://vcdvsql.cn/article22/hiodcc.html
成都網站建設公司_創新互聯,為您提供微信公眾號、電子商務、網站建設、標簽優化、、品牌網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯