Android Http请求方法汇总,腾讯T3大牛亲自教你

String result = null;

URL url = null;

HttpURLConnection connection = null;

InputStreamReader in = null;

try {

url = new URL(“http://10.0.2.2:8888/data/post/”);

connection = (HttpURLConnection) url.openConnection();

connection.setDoInput(true);

connection.setDoOutput(true);

connection.setRequestMethod(“POST”);

connection.setRequestProperty(“Content-Type”, “application/x-www-form-urlencoded”);

connection.setRequestProperty(“Charset”, “utf-8”);

DataOutputStream dop = new DataOutputStream(

connection.getOutputStream());

dop.writeBytes(“token=alexzhou”);

dop.flush();

dop.close();

in = new InputStreamReader(connection.getInputStream());

BufferedReader bufferedReader = new BufferedReader(in);

StringBuffer strBuffer = new StringBuffer();

String line = null;

while ((line = bufferedReader.readLine()) != null) {

strBuffer.append(line);

}

result = strBuffer.toString();

} catch (Exception e) {

e.printStackTrace();

} finally {

if (connection != null) {

connection.disconnect();

}

if (in != null) {

try {

in.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

return result;

}

如果参数中有中文的话,可以使用下面的方式进行编码解码:

1URLEncoder.encode("测试","utf-8")
2URLDecoder.decode("测试","utf-8");

2.使用Apache的HttpClient访问网络资源

(1)get请求

public String executeGet() {

String result = null;

BufferedReader reader = null;

try {

HttpClient client = new DefaultHttpClient();

HttpGet request = new HttpGet();

request.setURI(new URI(

“http://10.0.2.2:8888/data/get/?token=alexzhou”));

HttpResponse response = client.execute(request);

reader = new BufferedReader(new InputStreamReader(response

.getEntity().getContent()));

StringBuffer strBuffer = new StringBuffer(“”);

String line = null;

while ((line = reader.readLine()) != null) {

strBuffer.append(line);

}

result = strBuffer.toString();

} catch (Exception e) {

e.printStackTrace();

} finally {

if (reader != null) {

try {

reader.close();

reader = null;

} catch (IOException e) {

e.printStackTrace();

}

}

}

return result;

}

(2)post请求

public String executePost() {

String result = null;

BufferedReader reader = null;

try {

HttpClient client = new DefaultHttpClient();

HttpPost request = new HttpPost();

request.setURI(new URI(“http://10.0.2.2:8888/data/post/”));

List postParameters = new ArrayList();

postParameters.add(new BasicNameValuePair(“token”, “alexzhou”));

UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(

postParameters);

request.setEntity(formEntity);

HttpResponse response = client.execute(request);

reader = new BufferedReader(new InputStreamReader(response

.getEntity().getContent()));

StringBuffer strBuffer = new StringBuffer(“”);

String line = null;

while ((line = reader.readLine()) != null) {

strBuffer.append(line);

}

result = strBuffer.toString();

} catch (Exception e) {

e.printStackTrace();

} finally {

if (reader != null) {

try {

reader.close();

reader = null;

} catch (IOException e) {

e.printStackTrace();

}

}

}

return result;

}

3.服务端代码实现

上面是采用两种方式的get和post请求的代码,下面来实现服务端的代码编写,使用python+flask真的非常的简单,就一个文件,前提是你得搭建好python+flask的环境,代码如下:

#coding=utf-8

import json

from flask import Flask,request,render_template

app = Flask(name)

def send_ok_json(data=None):

if not data:

data = {}

ok_json = {‘ok’:True,‘reason’:‘’,‘data’:data}

return json.dumps(ok_json)

@app.route(‘/data/get/’,methods=[‘GET’])

def data_get():

token = request.args.get(‘token’)

ret = ‘%s**%s’ %(token,‘get’)

return send_ok_json(ret)

@app.route(‘/data/post/’,methods=[‘POST’])

def data_post():

token = request.form.get(‘token’)

ret = ‘%s**%s’ %(token,‘post’)

return send_ok_json(ret)

if name == “main”:

app.run(host=“localhost”,port=8888,debug=True)

运行服务器,如图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4. 编写单元测试代码

右击项目:new–》Source Folder取名tests,包名是:com.alexzhou.androidhttp.test(随便取,没有要求),结构如图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在该包下创建测试类HttpTest,继承自AndroidTestCase。编写这四种方式的测试方法,代码如下:

public class HttpTest extends AndroidTestCase {

@Override

protected void setUp() throws Exception {

Log.e(“HttpTest”, “setUp”);

}

@Override

protected void tearDown() throws Exception {

Log.e(“HttpTest”, “tearDown”);

}

public void testExecuteGet() {

Log.e(“HttpTest”, “testExecuteGet”);

HttpClientTest client = HttpClientTest.getInstance();

String result = client.executeGet();

Log.e(“HttpTest”, result);

}

public void testExecutePost() {

Log.e(“HttpTest”, “testExecutePost”);

HttpClientTest client = HttpClientTest.getInstance();

String result = client.executePost();

Log.e(“HttpTest”, result);

}

public void testExecuteHttpGet() {

Log.e(“HttpTest”, “testExecuteHttpGet”);

HttpClientTest client = HttpClientTest.getInstance();

String result = client.executeHttpGet();

Log.e(“HttpTest”, result);

}

public void testExecuteHttpPost() {

Log.e(“HttpTest”, “testExecuteHttpPost”);

HttpClientTest client = HttpClientTest.getInstance();

String result = client.executeHttpPost();

Log.e(“HttpTest”, result);

}

}

附上HttpClientTest.java的其他代码:

public class HttpClientTest {

private static final Object mSyncObject = new Object();

private static HttpClientTest mInstance;

private HttpClientTest() {

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

光有这些思路和搞懂单个知识的应用是还远远不够的,在Android开源框架设计思想中的知识点还是比较多的,想要搞懂还得学会整理和规划:我们常见的**Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架,**这些都是属于Android开源框架设计思想的。如下图所示:

image

这位阿里P8大佬针对以上知识点,熬夜整理出了一本长达1042页的完整版如何解读开源框架设计思想PDF文档,内容详细,把Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架这些知识点从源码分析到实战应用都讲的简单明了。

由于文档内容过多,篇幅受限,只能截图展示部分

image

image

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

.(img-fYYHXUYn-1712337854105)]

这位阿里P8大佬针对以上知识点,熬夜整理出了一本长达1042页的完整版如何解读开源框架设计思想PDF文档,内容详细,把Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架这些知识点从源码分析到实战应用都讲的简单明了。

由于文档内容过多,篇幅受限,只能截图展示部分

[外链图片转存中…(img-qEBauDs3-1712337854105)]

[外链图片转存中…(img-CQ8mbfCM-1712337854106)]

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你好!如果你使用的是Android平台上的QQ地图SDK,并且在使用Poi检索功能时遇到了“未被授权”的问题,那么可能是因为你的开发者账号没有获得相应的授权。 为了解决这个问题,你需要在QQ地图开放平台上注册一个开发者账号,并为你的应用程序申请相应的API Key。在你的应用程序,使用这个API Key来进行Poi检索请求。 如果你已经完成了这些步骤,但仍然遇到了未被授权的问题,请检查你的应用程序是否使用了正确的API Key,以及你是否有权限访问所请求的资源。你还可以尝试联系QQ地图的技术支持,以获取更多帮助和支持。 希望这些信息能够对你有所帮助! ### 回答2: 腾讯地图使用POI(兴趣点)显示的请求来源未被授权的问题,可能是由于以下原因所引起的: 1. 未在腾讯地图开放平台上注册应用并获取有效的API密钥。在使用腾讯地图API之前,我们需要先注册成为开发者,并在平台上创建应用,获得相应的API密钥。没有有效的API密钥,就无法正常请求腾讯地图的数据。 解决办法:在腾讯地图开放平台上注册成为开发者,创建应用,并生成API密钥。 2. API密钥配置错误或失效。即使已经获得了API密钥,但如果在代码配置错误或者密钥过期,同样会导致该错误。 解决办法:确保正确配置API密钥,并定期检查密钥的有效期限,及时更新。 3. 请求接口的权限未正确设置。腾讯地图的一些功能接口可能需要进行权限设置,如果请求的接口未经过授权,将无法正常调用接口。 解决办法:在腾讯地图开放平台上的应用管理,检查并设置相应接口的权限,确保接口权限得到授权。 总结:要解决“腾讯地图POI显示请求来源未被授权”的问题,首先需要注册开发者账号,创建应用,获取有效的API密钥。然后,确保密钥在代码正确配置,并且没有过期。最后,需要检查并设置相应接口的权限,确保接口权限得到授权。这样才能正常请求腾讯地图的POI数据并进行显示。 ### 回答3: 当Android使用腾讯地图POI显示时,如果出现“请求来源未被授权”错误信息,这通常意味着您的应用使用了腾讯地图的API接口,但没有通过腾讯地图开放平台获得相应的授权。 要解决这个问题,首先您需要在腾讯地图开放平台注册一个开发者账号,并创建一个应用来获取API密钥。然后,您需要在Android应用配置正确的API密钥,以确保请求可以被授权。 在配置,您需要在AndroidManifest.xml文件添加以下代码来设置API密钥: ``` <meta-data android:name="TencentMapSDK" android:value="YOUR_API_KEY" /> ``` 请确保将“YOUR_API_KEY”替换为您在腾讯地图开放平台获得的真实API密钥。 同时,还需要确保您的应用已申请了使用腾讯地图的相关权限,在AndroidManifest.xml文件添加以下代码: ``` <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> ``` 此外,对于一些特定的功能,您可能还需要根据腾讯地图开放平台的要求添加其他权限。 总结来说,要解决“请求来源未被授权”错误,您需要注册腾讯地图开放平台账号,获取API密钥,并在Android应用正确配置这些信息。同时,确保您的应用已申请了使用腾讯地图的相关权限。这样,您就可以顺利地使用腾讯地图的POI功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值