使用Scala使用

时间:2020-06-11 15:57:08

标签: scala api rest

这是我第一次调用REST APIGet方法),也使用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 APIscala很陌生。我是第一次打电话给REST API

有人可以在这里帮我吗?

0 个答案:

没有答案