Невозможно обойти прокси-сервер при подключении к Azure CosmosDB из IntelliJ с помощью scala

Я пытаюсь подключиться к Azure Cosmos DB из intelliJ, используя язык Scala.

Я могу получить данные из БД, когда подключаю свой ноутбук из домашней сети. Но я получаю ошибку тайм-аута при подключении ноутбука к офисной сети. Похоже, какая-то проблема с прокси-сервером, поэтому я настроил параметры прокси в intelliJ, как показано ниже.

введите здесь описание изображения

Я попытался проверить свое соединение со страницы настроек прокси, но выдает ошибку, как показано ниже.

Problem with connection: Request failed with status code 401

Я попытался открыть то же самое из браузера и получил ошибку ниже.

{"code":"Unauthorized","message":"Required Header authorization is missing. Ensure a valid Authorization token is passed.\r\nActivityId: af2d771f-25a3-494a-90dd-b33cd66104e2, Microsoft.Azure.Documents.Common/2.5.1"}

Ниже приведен код intelliJ, который я пробовал, и этот код работает.

mport org.apache.spark.sql.SparkSession
import com.microsoft.azure.cosmosdb.spark.schema._
import com.microsoft.azure.cosmosdb.spark._
import com.microsoft.azure.cosmosdb.spark.config.Config
import org.apache.log4j.Logger

object DeleteData {
  /* Get the logger */
  val log = Logger.getLogger(getClass.getName)

  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder().master("local").appName("DeleteData").getOrCreate()

    // Configure connection to your collection
    val readConfig = Config(Map(
      "Endpoint" -> "https://***.documents.azure.com:443/",
      "Masterkey" -> "***",
      "Database" -> "ConnectivityDB",
      "Collection" -> "historicData",
      "ConnectionMode" -> "Gateway",
      "SamplingRatio" -> "1.0",
      "query_custom" -> "SELECT c.NUM from c where c._ts = 1564566440"
    ))
    // Connect via azure-cosmosdb-spark to create Spark DataFrame
    val docs = spark.read.cosmosDB(readConfig)
    println("Total Count: " +docs.count())
    docs.show(5)

    spark.stop()
  }
}

Есть ли способ обойти прокси для подключения к cosmos DB из intelliJ?


person Antony    schedule 09.08.2019    source источник
comment
Пожалуйста, не показывайте свою личную информацию на общедоступном форуме, это огромный риск для вас. Несмотря на то, что я уже отредактировал ее для вас, вам лучше повторно сгенерировать свой первичный ключ.   -  person Jay Gong    schedule 09.08.2019
comment
@JayGong Спасибо :) даже конечная точка и первичный ключ, предоставленные мной, не были точными значениями. В дальнейшем я позабочусь о сокрытии личной информации.   -  person Antony    schedule 09.08.2019


Ответы (1)


Боюсь, что настройка прокси IntelliJ не влияет на ваш код, вы можете попытаться перехватить запрос с помощью инструмента Fiddler.

Возможно, вам удастся установить настройку прокси в коде. См. Эту ссылку.

import java.net.Authenticator
import java.net.PasswordAuthentication

class ProxyAuthenticator(user: String, password: String) extends Authenticator {

  def this() = this("default_user_name", "default_password")

  override def getPasswordAuthentication(): PasswordAuthentication = {
    return new PasswordAuthentication(user, password.toCharArray());
  }
}
person Jay Gong    schedule 09.08.2019
comment
Настройки прокси Intellij IDEA предназначены для внутренних сетевых сервисов IDE, таких как Plugins Market или обновлений. - person Petr Rastegaev; 09.08.2019
comment
@jay Gong: Вышеупомянутое решение не работает .. Даже я пробовал это val connectionPolicy = new ConnectionPolicy connectionPolicy.setProxy("proxyhost", portnum) Но не работает - person Antony; 09.08.2019
comment
@Antony Все еще встречал ту же проблему? - person Jay Gong; 12.08.2019
comment
да. Даже после установки прокси в коде я столкнулся с той же проблемой. - person Antony; 14.08.2019