我是科特林语言的新手,并尝试从各种YouTube教程和其他在线文章中学习。我从一个视频中学到了什么,并按照这些步骤使用免费的API汇率创建了一个简单的货币转换器。以下是获取货币汇率结果的函数。
private fun getApiResult(){
var baseCurrency = "EUR"
var convertedToCurrency = "USD"
var conversionRate = 0f
if(et_firstConversion != null && et_firstConversion.text.isNotEmpty() && et_firstConversion.text.isNotBlank()){
val API = "http://data.fixer.io/api/latest?access_key=a22e608d4311d9ade9221a2abadb111e&symbols=$convertedToCurrency,AUD,CAD,PLN,MXN&format=1"
if(baseCurrency == convertedToCurrency){
Toast.makeText(applicationContext,"Cannot convert the same currency", Toast.LENGTH_SHORT).show()
} else {
GlobalScope.launch(Dispatchers.IO){
try {
val apiResult = URL(API).readText()
val jsonObject = JSONObject(apiResult)
conversionRate = jsonObject.getJSONObject("rates").getString(convertedToCurrency).toFloat()
Log.d("Main", "$conversionRate")
Log.d("Main", apiResult)
withContext(Dispatchers.Main){
val text = ((et_firstConversion.text.toString().toFloat()) * conversionRate).toString()
et_secondConversion?.setText(text)
}
} catch (e:Exception){
Log.e("Main", "$e")
}
}
}
}
}
问题是,异常被触发,并表示以下内容:明文超文本传输协议流量是不允许的
在Manifest.xml中,我设置了以下内容:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
免费API对免费用户非常有限,不允许使用Https
。我也不确定编码(它的实现方式)是否以正确的方式实现了我想要实现的目标。欢迎对本准则提出任何建议/改进。
Android 5.0 API 21
cleartext
HTTP流量在Android 9及以上版本中默认禁用。
要使任何http
url正常工作,必须添加网络安全配置。
添加一个名为network_security_config.xml
atres的文件
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">data.fixer.io</domain>
</domain-config>
</network-security-config>
在Androidanifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
...
android:networkSecurityConfig="@xml/network_security_config">
...
</application>
</manifest>
您还可以将整个应用程序设置为在任何域上使用
cleartext
HTTP。为此,在application
标记中将android:usesCleartextTraffic
设置为true
。
在Androidanifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
...
android:usesCleartextTraffic="true">
...
</application>
</manifest>
您可以在这个codelabs教程中阅读更多关于它的内容。
通常用于HTTP/HTTPS请求失败/成功等处理. 进程: 主进程 IncomingMessage是由 EventEmitter响应可读流接口 实例事件 事件: 'data' 用途:响应或回调传送到应用的数据 chunk Buffer - 响应正文的数据块. 事件: 'end' 触发:响应正文已结束时 事件: 'aborted' 触发:正在进行的HTTP事务期间请求已取消时 事件: 'error
并发请求处理 我创建了一个服务器,并使用s.listenandserve()来处理请求。据我所知,这些请求是同时送达的。我使用一个简单的处理程序来检查它: 我看到,如果我发送了几个请求,我将看到所有的“1”出现,只有在一秒钟后所有的“2”出现。但是如果删除Hibernate行,我会看到程序在完成前一个请求之前从不启动请求(输出为1 2 1 2 1 2...)。所以我不明白,如果它们是并发的还是不是
问题内容: data = { ‘ids’: [12, 3, 4, 5, 6 , …] } urllib2.urlopen("http://abc.com/api/posts/create”,urllib.urlencode(data)) 我想发送POST请求,但是其中一个字段应该是数字列表。我怎样才能做到这一点 ?(JSON?) 问题答案: 如果您的服务器期望POST请求为json,则您需要添加标
我一直试图向facebook发送HTTP POST请求,但没有成功。我从服务器收到以下响应: HTTP/1.1 400不良请求内容-类型:text/html;charset=utf-8日期:2016年12月10日星期六21:28:17 GMT连接:关闭内容-长度:2959 Facebook |错误 抱歉,出了点问题,我们正在修理,会尽快修好的 我的密码 我做错了什么?
我正在使用Java VertX框架,并尝试使用VertX WebClient和一个简单的HTTP请求加载多个JSON对象。我想并行地做这件事,这样可以加快进程。 我有一个endpoint对象: 在另一个类中,我有以下应该并行处理的函数(源代码): 我不知道如何继续下去。VertX WebClient强制我使用异步处理程序,这意味着我不能直接返回JsonObject。
4.8 处理非HTTP GET请求 一般来说,爬虫只会抓取信息展示类的页面,所以基本只会处理HTTP GET方法的数据。但是对于某些场景,模拟POST等方法也是需要的。 0.7.1版本之后,废弃了老的nameValuePair的写法,采用在Request对象上添加Method和requestBody来实现。 Request request = new Request("http://xxx/pat