这是我第一次调用REST API
(Get
方法),也使用Scala
。
我对它的工作原理并不了解。
我最初使用以下代码使用示例URL测试了代码:
def invokeRestAPI(db:String,user: String) = {
import scala.io.Source.fromURL
val url = "https://sampleURL.com"
import spark.implicits._
val json_data = fromURL(url).mkString
}
但是,当我使用而不是示例中的实际URL时,该URL需要花费大量时间来响应,并且此特定方法未返回任何值。我已经读过这种方法(fromURL
)无法很好地处理超时。
我后来移到以下方法来处理超时:
def getRestContent(url:String): String = {
val httpClient = new DefaultHttpClient()
val httpResponse = httpClient.execute(new HttpGet(url))
val entity = httpResponse.getEntity()
var content = ""
if (entity != null) {
val inputStream = entity.getContent()
content = io.Source.fromInputStream(inputStream).getLines.mkString
inputStream.close
}
httpClient.getConnectionManager().shutdown()
return content
}
val url = "https://sampleURL.com"
val data=getRestContent(url)
这解决了超时问题,但返回了HTML页面(登录页面)。
编辑:
我能够弄清楚在调用REST API时如何将授权令牌(SSO令牌)作为标头传递。
使用:request.addHeader("Key":<value>)
但是无法弄清楚如何通过传递参数和标头来调用HTTP来获取令牌。
我基本上正在为scala
中的requests.post(url,param,header)
方法寻找等效的python
方法
我对REST API
和scala
很陌生。我是第一次打电话给REST API
。
有人可以在这里帮我吗?