我是新來的斯卡拉,我有一些網址。我需要檢查URL引用的資源是否正常工作?我如何用Scala實現這一目標?Scala中有一種簡單的方法來檢查某個URL的資源是否以404響應?
0
A
回答
1
我不會nk有一個簡單的方法可以用Scala的標準庫來實現。但還有其他幾個圖書館可以幫助你解決問題。
我給你一個解釋,說明如何用Spray做到這一點。此解決方案具有無阻塞的優點,但由於您是Scala的新用戶,因此使用Future
可能對您而言是新的。
首先,您需要爲項目添加一些依賴關係。最簡單的方法是如果你使用SBT。將以下行添加到您的build.sbt
。
resolvers += "spray repo" at "http://repo.spray.io"
// Dependencies
libraryDependencies += "com.typesafe.akka" %% "akka-actor" % "2.2.3"
libraryDependencies += "io.spray" % "spray-client" % "1.2.0"
現在你的程序的源代碼看起來很容易的,也是不可阻擋:
import akka.actor.ActorSystem
import spray.http._
import spray.client.pipelining._
import scala.concurrent.Future
import scala.util.{ Success, Failure }
object HTTPTest extends App {
implicit val system = ActorSystem("http-test")
import system.dispatcher // execution context for futures
// take an http request and return a future of http response
val pipeline: HttpRequest => Future[HttpResponse] = sendReceive
// this method will give you *only* the status code for a URL as a Future
def getStatusFor(url: String): Future[Int] =
pipeline(Get(url)).map { x => x.status.intValue }
// use it this way
getStatusFor("http://server.org/help").onComplete {
case Success(statusCode) => println(statusCode)
case Failure(err) => // do something with the exception
}
}
這是否幫助?
2
由於URL只是對Web資源的虛擬引用,它始終有效。 ;)
此外,你可以閱讀從資源文本一行:
try {
val text = Source.fromUrl(new java.net.URL(someString)).getLine
} catch {
case java.io.IOException => // do something ...
}
或讀取資源文本的所有行:
或者您可以使用Java類連接到資源並閱讀它的長度等...:
try {
val connection = (new java.net.URL(someString)).openConnection
connection.connect;
val l = connection.getContentLength
// use the connection anyway you like
} catch {
case java.io.IOException => // do something ...
}
2
您將需要使用http訪問l試圖訪問該URL。使用play2的WS
import play.api.libs.ws.WS
val futureResponse:Future[Response] = WS.url("http://www.example.com/404.html").get()
那麼您可以使用一元操作讀取響應和反應
futureResponse.map {response => response.status==404} //will return a Future[Boolean]
,或者你可以阻止,直到你真正擁有的響應:
import scala.concurrent._
import scala.concurrent.duration._
val response =Await.result(futureResponse, 5 seconds)
if(response.status==404) {
???
}else{
???
}
有其他HTTP客戶端爲斯卡拉如Dispatch
相關問題
- 1. 在PHP中,是否有一種簡單的方法來判斷URL是否爲單個文件資源?
- 2. 在Rails中,是否有一種簡單的方法來檢查ActiveRecord的屬性?
- 3. 是否有一種簡單的方法來檢查多個列以查看值是否爲空?
- 4. 有沒有一種簡單的方法來檢查字段是否爲null?
- 5. 最簡單的方法來檢查字符串是否爲URL
- 6. 有沒有簡單的方法來檢查一個mp4文件是否有效?
- 7. 最好的方法來檢查一個URL是否有效
- 8. 是否有一種簡單的方法來檢查SFTP服務器中是否有更改?
- 9. 有沒有一種簡單的方法來檢查對象是否可以在python中使用JSON序列化?
- 10. 有沒有一種簡單的方法來檢查傳入的呼叫者是否是Android中的聯繫人?
- 11. 另一種檢查圖像url的方法是否有效
- 12. 簡單的方法來檢查FormatString是否有效?
- 13. 是否有簡單的方法來報告Amazon S3 404錯誤?
- 14. 一個簡單的方法來檢查文本框是否有值?
- 15. 有沒有一種簡單的方法來拼寫檢查與.NET中的TinyMCE
- 16. 簡單的查詢:SortedSet <T>是否有一種簡單的方法來查找中間元素?
- 17. 有沒有一種簡單的方法來獲取URL中的URL
- 18. 是否有一個很好的簡單方法來檢查Javascript中的變量是否有值?
- 19. 簡單的方法來檢查項目是否在列表中?
- 20. 有沒有一種簡單的方法來告訴用戶是否有谷歌1 +一個URL
- 21. 如何檢查資源是否翻譯爲某種語言
- 22. 是否有一種方法可以限制c#中的API處理器資源?
- 23. 是否有一種簡單的方法來刪除列表項中的空白
- 24. Rails:是否有一種乾淨的方式來定義影響嵌套資源/模型的方法?
- 25. 有沒有一種簡單的方法來重複一個PHP的MySQL查詢?
- 26. 簡單的方法來檢查對象是否可打印
- 27. 簡單的方法來檢查是否改變狀態
- 28. AS3簡單的方法來檢查聲音是否完成
- 29. 有沒有一種更簡單的方法來指定intellij中的javadoc url?
- 30. 有沒有簡單的方法來生成示例FHIR資源?
在這裏,它給出了頁面的html代碼。它工作正常:)有沒有辦法檢查** HTML respose代碼(404)**檢查網址? – Shashika
'scala.io.Source'不適合您的問題。它不會讓你訪問HTTP頭。 – pvorb