包含post测试安卓版的词条

网友投稿 252 2023-01-21


本篇文章给大家谈谈post测试安卓版,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享post测试安卓版的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

android POST请求(https)遇到的问题

安卓项目开发第一阶段完工,接下来是后台交互。当然,与后台交互第一步一般都是与注册登录接口打交道。

        不说废话了,进入正题···以下讲的post请求,是跟https相关

        1.将访问路径转成URL :

            URLurl =newURL(path);

        2.通过URL获取连接:

             HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        3.设置请求方式:

            conn.setRequestMethod("POST");

        4.设置请求超时时间:

            conn.setConnectTimeout(5000);
        5.设置请求头信息:

            conn.setRequestProperty("Content-type","application/json");
       6.获取输出流,将数据写给服务器:

            6.1 OutputStreamos = conn.getOutputStream();// 获取输出流

            6.2 os.write(data.getBytes());// 将数据写给服务器

        7.设置响应码:

             int code = conn.getResponseCode();
            7.1 请求码200,表明请求成功,获取返回内容的输入流:

              InputStream is = conn.getInputStream();

              Log.v("json","MESSAGE == "+streamToString(is));

            7.2 将输入流转换成字符串信息:

           7.3 若返回值400,则是返回网络异常,做出响应的处理。
      1、android.os.NetworkOnMainThreadException

         原因:

         android.os.NetworkOnMainThreadException是说不要在主线程中访问网络,这个是android3.0版本开始就强制程序不能在主线程中访问网络,要把访问网络放在独立的线程中。
        解决方法:(方法一亲测有效,另外两种方法未测试,想了解的请 移步至此 ···尊重原文作者劳动成果)

        1  想要忽略这些强制策略问题的话,可以在onCreate()方法里面加上

StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();

StrictMode.setThreadPolicy(policy);

            并在方法上加上@SuppressLint("NewApi"),重试,OK。

           此时,又抛出另一个问题······(程序猿就是不断的解决各种问题,泪奔~~)

      2、javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path

      解决方法:忽略证书问题()

          以上是百度到的方法,毕竟我只是一个刚接触android开发才两个月的小菜鸟,原文比较乱,整理一番供查阅。 原文出处 (尊重原文作者劳动成果)

          我是不断成长的mouse ···

如何在 Android 上用 Post 提交大量的数据

在 Android 上用 Post 提交大量的数据方法:
1.Android中实现
activity_main.xml部分
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"

<TextView
android:id="@+id/lblPostResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/butPost"
android:layout_centerHorizontal="true"
android:text="提交结果" /

<Button
android:id="@+id/butPost"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="25dp"
android:text="提交测试" /
</RelativeLayout
//import部分
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import android.util.Log;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Date;
import java.text.SimpleDateFormat;
//public class MainActivity extends Activity 部分
private Button m_butPost;
m_butPost=(Button)findViewById(R.id.butPost);
m_butPost.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
butPost_OnClick(v);
}
});
//提交测试
private void butPost_OnClick(View v){
//请求参数键-值对
String strRecSmsMsg="收短信测试";
//提交
RecSmsToPost(strRecSmsMsg);
openToast("提交测试完成");
}
//收到短信 后 提交
private void RecSmsToPost(String strRecSmsMsg){
String strNowDateTime=getNowDateTime("yyyy-MM-dd|HH:mm:ss");//当前时间
//参数
Map<String,String params = new HashMap<String,String();
params.put("RECSMSMSG", strRecSmsMsg);
//params.put("name", "李四");
//服务器请求路径
String strUrlPath = "ms/RecSms.php" +"?DateTime=" + strNowDateTime;
String strResult=HttpUtils.submitPostData(strUrlPath,params, "utf-8");
m_lblPostResult.setText(strResult);
//openToast("提交完成");
}
//获取当前时间
private String getNowDateTime(String strFormat){
if(strFormat==""){
strFormat="yyyy-MM-dd HH:mm:ss";
}
Date now = new Date();
SimpleDateFormat df = new SimpleDateFormat(strFormat);//设置日期格式
return df.format(now); // new Date()为获取当前系统时间
}
//弹出消息
private void openToast(String strMsg){
Toast.makeText(this, strMsg, Toast.LENGTH_LONG).show();
}
HttpUtils 类部分
新建 类文件 HttpUtils 其中代码如下:
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.OutputStream;
import java.io.InputStream;
import java.util.Map;
import java.io.IOException;
import java.net.URLEncoder;
import java.io.ByteArrayOutputStream;
public class HttpUtils {
/*
* Function : 发送Post请求到服务器
* Param : params请求体内容,encode编码格式
*/
public static String submitPostData(String strUrlPath,Map<String, String params, String encode) {

byte[] data = getRequestData(params, encode).toString().getBytes();//获得请求体
try {

//String urlPath = "ms/RecSms.php";
URL url = new URL(strUrlPath);

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 "err: " + e.getMessage().toString();
}
return "-1";
}

/*
* Function : 封装请求体信息
* Param : params请求体内容,encode编码格式
*/
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服务器的响应输入流
*/
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;
}
}
2.服务器端的准备
在服务器端我采用wamp方式,当然其它方式也可以。 创建RecSms.php 文件 内容如下:
<?php
require_once ('Log/LogHelper.php');
echo "你好" . "post </br";
foreach($_REQUEST as $k=$v){
echo $k;echo "--";
echo $v;echo "</br";
}
WriteLog('你好 RecSms.php ---------');

foreach($_POST as $k=$v){
WriteLog( $k .'--' .$v);
}
foreach($_GET as $k=$v){
WriteLog( $k .'--' .$v);
}

?
将提交的数据写入Log\Log.php文件中。
其中LogHelper.php 为写日志文件,代码文件如下:
<?php
function WriteLog($msg){
$fp = fopen("Log\Log.php", "a");//文件被清空后再写入
if($fp)
{
date_default_timezone_set('asia/chongqing');
$time=date("H:i:s",strtotime("now"));
$flag=fwrite($fp, $time ." ".$msg ." \r\n");
fclose($fp);
}
}
?
所有代码已写好。
开启 wamp ,在Android中点击 提交测试 则 在Log.php文件写入提交的数据

安卓版按键精灵urlpost

//先复制(当然剪切也行,看你哪个方便咯)
KeyDown 17, 1
KeyPress 67, 1
KeyUp 17, 1
Clipboard = Plugin.Sys.GetCLB() //得到剪切板内容
MyString = ;[url]; Clipboard ;[url]; //处理字符串
Call Plugin.Sys.SetCLB(MyString) //设置剪切版内容
//粘贴
KeyDown 17, 1
KeyPress 86, 1
KeyUp 17, 1
或者这样
KeyDown 17, 1
KeyPress 67, 1
KeyUp 17, 1
Clipboard = Plugin.Sys.GetCLB() //得到剪切板内容
MyString = ;[url]; Clipboard ;[url]; //处理字符串
SayString MyString //输出文本

Android POST提交

一、需要用到post测试安卓版的场景
在jQuery中使用$.post()就可以方便的发起一个post请求,在android程序中有时也要从服务器获取一些数据,就也必须得使用post请求了。
二、需要用到的主要类
在android中使用post请求主要要用到的类是HttpPost、HttpResponse、EntityUtils
三、主要思路
1、创建HttpPost实例,设置需要请求服务器的url。
2、为创建的HttpPost实例设置参数,参数设置时使用键值对的方式用到NameValuePair类。
3、发起post请求获取返回实例HttpResponse
4、使用EntityUtils对返回值的实体进行处理(可以取得返回的字符串,也可以取得返回的byte数组)
代码也比较简单,注释也加上了,就直接贴出来了
[java]
package com.justsy.url;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import android.app.Activity;
import android.os.Bundle;
public class HttpURLActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("start url...");
String url = "ustsyApp/Applet";
// 第一步,创建HttpPost对象
HttpPost httpPost = new HttpPost(url);
// 设置HTTP POST请求参数必须用NameValuePair对象
List<NameValuePair params = new ArrayList<NameValuePair();
params.add(new BasicNameValuePair("action", "downloadAndroidApp"));
params.add(new BasicNameValuePair("packageId", "89dcb664-50a7-4bf2-aeed-49c08af6a58a"));
params.add(new BasicNameValuePair("uuid", "test_ok1"));
HttpResponse httpResponse = null;
try {
// 设置httpPost请求参数
httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
httpResponse = new DefaultHttpClient().execute(httpPost);
//System.out.println(httpResponse.getStatusLine().getStatusCode());
if (httpResponse.getStatusLine().getStatusCode() == 200) {
// 第三步,使用getEntity方法活得返回结果
String result = EntityUtils.toString(httpResponse.getEntity());
System.out.println("result:" + result);
T.displayToast(HttpURLActivity.this, "result:" + result);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("end url...");
setContentView(R.layout.main);
}
}
ADD:使用HttpURLConnection 进行post请求
[java]
String path = "android-web-server/httpConnectServlet.do?PackageID=89dcb664-50a7-4bf2-aeed-49c08af6a58a";
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setConnectTimeout(5000);
System.out.println(conn.getResponseCode());
============================================================================================================================
通过get和post方式向服务器发送请求
首先说一下get和post的区别
get请求方式是将提交的参数拼接在url地址后面,例如http://www.baidu.com/index.jsp?num=23jjj=888;
但是这种形式对于那种比较隐私的参数是不适合的,而且参数的大小也是有限制的,一般是1K左右吧,对于上传文件
就不是很适合。
post请求方式是将参数放在消息体内将其发送到服务器,所以对大小没有限制,对于隐私的内容也比较合适。
如下Post请求
POST /LoginCheck HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: login.asp
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; BOIE9;ZHCN)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: 192.168.2.1
Content-Length: 39
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: language=en
Username=admincheckEn=0Password=admin //参数位置
在android中用get方式向服务器提交请求post测试安卓版
在android模拟器中访问本机中的tomcat服务器时,注意post测试安卓版:不能写localhost,因为模拟器是一个单独的手机系统,所以要写真是的IP地址。
否则无法访问到服务器。
//要访问的服务器地址,下面的代码是要向服务器提交用户名和密码,提交时中文先要经过URLEncoder编码,因为模拟器默认的编码格式是utf-8
//而tomcat内部默认的编码格式是ISO8859-1,所以先将参数进行编码,再向服务器提交。
private String address = "server/loginServlet";
public boolean get(String username, String password) throws Exception {
username = URLEncoder.encode(username);// 中文数据需要经过URL编码
password = URLEncoder.encode(password);
String params = "username=" + username + "password=" + password;
//将参数拼接在URl地址后面
URL url = new URL(address + "?" + params);
//通过url地址打开连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//设置超时时间
conn.setConnectTimeout(3000);
//设置请求方式
conn.setRequestMethod("GET");
//如果返回的状态码是200,则一切Ok,连接成功。
return conn.getResponseCode() == 200;
}
在android中通过post方式提交数据。
public boolean post(String username, String password) throws Exception {
username = URLEncoder.encode(username);// 中文数据需要经过URL编码
password = URLEncoder.encode(password);
String params = "username=" + username + "password=" + password;
byte[] data = params.getBytes();
URL url = new URL(address);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(3000);
//这是请求方式为POST
conn.setRequestMethod("POST");
//设置post请求必要的请求头
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");// 请求头, 必须设置
conn.setRequestProperty("Content-Length", data.length + "");// 注意是字节长度, 不是字符长度
conn.setDoOutput(true);// 准备写出
conn.getOutputStream().write(data);// 写出数据
return conn.getResponseCode() == 200;
想了解根多信息请登录http://www.xaafeicuiedu.com/

为什么在android中采用http post方式请求 总是返回405状态吗呢

HTTP错误405 – 禁止访问资源.
可能是server端有访问设置.你可以问下做server的人.
或者换一个server做下测试,看到底是server的问题,还是你代码的问题.

使用什么软件进行post或get测试

有几种工具:
1、著名的LR,LoadRunner,绝对专业,用web方式录制后可以选择get或post语句执行,或自己编写get或post脚本。
2、微软的著名工具Web Stress Application,这个可以对网页进行post、get方式的批量压力测试,非常棒。
3、自己写加载工具:这个可能更定制化,建议写成“引擎+脚本”的形式,引擎界面就是选择地址、post/get方法、访问数量等,具体的访问语句可以通过文件或引擎中的界面加载,这样以后测试就可以以自己定制的方式写写“脚本”就行了。
希望对您有帮助。 关于post测试安卓版和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 post测试安卓版的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、post测试安卓版的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:详细讲述Java中的对象转型
下一篇:java 父类实现接口(java父类和接口有什么区别)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~