in linkis-commons/linkis-httpclient/src/main/scala/org/apache/linkis/httpclient/AbstractHttpClient.scala [286:433]
protected def prepareReq(requestAction: HttpAction): HttpRequestBase = {
val realURL = getRequestUrl(requestAction)
tryLogin(requestAction, realURL, false)
val request = requestAction match {
case delete: DeleteAction =>
val builder = new URIBuilder(realURL)
if (!delete.getParameters.isEmpty) {
delete.getParameters.asScala.foreach { case (k, v) =>
if (k != null && v != null) builder.addParameter(k.toString, v.toString)
}
}
val httpDelete = new HttpDelete(builder.build())
if (requestAction.getHeaders.asScala.nonEmpty) {
requestAction.getHeaders.asScala.foreach { case (k, v) =>
if (k != null && v != null) httpDelete.addHeader(k.toString, v.toString)
}
}
httpDelete
case put: PutAction =>
val httpPut = new HttpPut(realURL)
if (put.getParameters.asScala.nonEmpty || put.getFormParams.asScala.nonEmpty) {
val nameValuePairs = new util.ArrayList[NameValuePair]
if (put.getParameters.asScala.nonEmpty) {
put.getParameters.asScala.foreach { case (k, v) =>
if (v != null) nameValuePairs.add(new BasicNameValuePair(k, v.toString))
}
}
if (put.getFormParams.asScala.nonEmpty) {
put.getFormParams.asScala.foreach { case (k, v) =>
if (v != null) nameValuePairs.add(new BasicNameValuePair(k, v.toString))
}
}
httpPut.setEntity(new UrlEncodedFormEntity(nameValuePairs, Charset.defaultCharset))
}
if (StringUtils.isNotBlank(put.getRequestPayload)) {
val stringEntity = new StringEntity(put.getRequestPayload, "UTF-8")
stringEntity.setContentEncoding(Configuration.BDP_ENCODING.getValue)
stringEntity.setContentType("application/json")
httpPut.setEntity(stringEntity)
}
if (requestAction.getHeaders.asScala.nonEmpty) {
requestAction.getHeaders.asScala.foreach { case (k, v) =>
if (k != null && v != null) httpPut.addHeader(k.toString, v.toString)
}
}
httpPut
case upload: UploadAction =>
val httpPost = new HttpPost(realURL)
val builder = MultipartEntityBuilder.create()
if (upload.inputStreams != null) {
upload.inputStreams.asScala.foreach { case (k, v) =>
builder.addBinaryBody(k, v, ContentType.create("multipart/form-data"), k)
}
}
upload.binaryBodies.asScala.foreach(binaryBody =>
builder.addBinaryBody(
binaryBody.parameterName,
binaryBody.inputStream,
binaryBody.contentType,
binaryBody.fileName
)
)
upload match {
case get: GetAction =>
get.getParameters.asScala.retain((k, v) => v != null && k != null).foreach {
case (k, v) =>
if (k != null && v != null) builder.addTextBody(k, v.toString)
}
case _ =>
}
upload match {
case get: GetAction =>
get.getHeaders.asScala.retain((k, v) => v != null && k != null).foreach { case (k, v) =>
if (k != null && v != null) httpPost.addHeader(k, v)
}
case _ =>
}
val httpEntity = builder.build()
httpPost.setEntity(httpEntity)
httpPost
case post: POSTAction =>
val httpPost = new HttpPost(realURL)
if (post.getParameters.asScala.nonEmpty || post.getFormParams.asScala.nonEmpty) {
val nvps = new util.ArrayList[NameValuePair]
if (post.getParameters.asScala.nonEmpty) {
post.getParameters.asScala.foreach { case (k, v) =>
if (v != null) nvps.add(new BasicNameValuePair(k, v.toString))
}
httpPost.setEntity(new UrlEncodedFormEntity(nvps, Charset.defaultCharset))
} else if (post.getFormParams.asScala.nonEmpty) {
post.getFormParams.asScala.foreach { case (k, v) =>
if (v != null) nvps.add(new BasicNameValuePair(k, v.toString))
}
val entity: HttpEntity = EntityBuilder
.create()
. /* setContentEncoding("UTF-8"). */
setContentType(ContentType.create("application/x-www-form-urlencoded", Consts.UTF_8))
.setParameters(nvps)
.build();
httpPost.setEntity(entity)
}
} else if (StringUtils.isNotBlank(post.getRequestPayload)) {
val stringEntity = new StringEntity(post.getRequestPayload, "UTF-8")
stringEntity.setContentEncoding(Configuration.BDP_ENCODING.getValue)
stringEntity.setContentType("application/json")
httpPost.setEntity(stringEntity)
}
if (requestAction.getHeaders.asScala.nonEmpty) {
requestAction.getHeaders.asScala.foreach { case (k, v) =>
if (k != null && v != null) httpPost.addHeader(k.toString, v.toString)
}
}
httpPost
case get: GetAction =>
val builder = new URIBuilder(realURL)
if (!get.getParameters.isEmpty) {
get.getParameters.asScala.foreach { case (k, v) =>
if (k != null && v != null) builder.addParameter(k.toString, v.toString)
}
}
val httpGet = new HttpGet(builder.build())
if (requestAction.getHeaders.asScala.nonEmpty) {
requestAction.getHeaders.asScala.foreach { case (k, v) =>
if (k != null && v != null) httpGet.addHeader(k.toString, v.toString)
}
}
httpGet
case _ =>
val httpost = new HttpPost(realURL)
val stringEntity = new StringEntity(requestAction.getRequestBody, "UTF-8")
stringEntity.setContentEncoding(Configuration.BDP_ENCODING.getValue)
stringEntity.setContentType("application/json")
httpost.setEntity(stringEntity)
if (requestAction.getHeaders.asScala.nonEmpty) {
requestAction.getHeaders.asScala.foreach { case (k, v) =>
if (k != null && v != null) httpost.addHeader(k.toString, v.toString)
}
}
httpost
}
request
}