次の Java プログラムを scala で書いてみました。
Java の HttpClient の使い方 (Post)
Http_post.scala
// -----------------------------------------------------------------------
/*
Http_post.scala
Jun/12/2021
*/
// -----------------------------------------------------------------------
import java.io.IOException
import java.io.UnsupportedEncodingException
import java.nio.charset.Charset
import java.nio.charset.StandardCharsets
import java.util.ArrayList
import java.util.List
import org.apache.http.HttpStatus
import org.apache.http.NameValuePair
import org.apache.http.client.ClientProtocolException
import org.apache.http.client.entity.UrlEncodedFormEntity
import org.apache.http.client.methods.CloseableHttpResponse
import org.apache.http.client.methods.HttpPost
import org.apache.http.impl.client.CloseableHttpClient
import org.apache.http.impl.client.HttpClients
import org.apache.http.message.BasicNameValuePair
import org.apache.http.util.EntityUtils
// -----------------------------------------------------------------------
object Http_client {
def runSample() = {
System.err.println ("*** runSample *** start ***")
var charset = StandardCharsets.UTF_8
var httpclient = HttpClients.createDefault()
var request = new HttpPost("https://httpbin.org/post")
var requestParams = new java.util.ArrayList[NameValuePair]()
requestParams.add(new BasicNameValuePair("user","jiro"))
requestParams.add(new BasicNameValuePair("password","123456"))
println ("requestの実行 「" + request.getRequestLine() + "」")
var response:CloseableHttpResponse = null
try {
request.setEntity(new UrlEncodedFormEntity(requestParams))
var response = httpclient.execute(request)
var status = response.getStatusLine().getStatusCode()
println("HTTPステータス:" + status)
if (status == HttpStatus.SC_OK){
var responseData = EntityUtils.toString(response.getEntity(),charset)
println(responseData)
}
} catch {
case e: ClientProtocolException => e.printStackTrace()
case e: UnsupportedEncodingException => e.printStackTrace()
case e: IOException => e.printStackTrace()
} finally {
try {
if (response != null) {
response.close()
}
if (httpclient != null) {
httpclient.close()
}
} catch {
case e: IOException => e.printStackTrace()
}
}
System.err.println ("*** runSample *** end ***")
}
}
// -----------------------------------------------------------------------
object Http_post {
def main(args: Array[String]) {
System.err.println ("*** 開始 ***")
Http_client.runSample()
System.err.println ("*** 終了 ***")
}
}
// -----------------------------------------------------------------------
Makefile
LIB=/usr/share/java
HTTPCLIENT_JAR=.:$(LIB)/httpclient-4.5.13.jar:$(LIB)/httpcore-4.4.14.jar
Http_post.class: Http_post.scala
scalac -cp $(HTTPCLIENT_JAR) Http_post.scala
clean:
rm -f *.class
実行コマンド
LIB=/usr/share/java
HTTPCLIENT_JAR=$LIB/httpclient-4.5.13.jar:$LIB/httpcore-4.4.14.jar:$LIB/commons-logging-1.2.jar
export CLASSPATH=.:$HTTPCLIENT_JAR
#
scala Http_post