Я могу подключить к Java API с C#?

Я не знаю VBA, но мне кажется, что вы делаете HTTP POST с учетными данными, а затем вы делаете HTTP GET, чтобы получить файл, который вы ищете. Я полагаю, что используемый вами класс хранит файлы cookie от запроса к запросу, и именно так работает аутентификация.

Предполагая, что в Go вы будете использовать библиотеку https://golang.org/pkg/net/http/cookiejar/ для хранения файлов cookie и https://golang.org / pkg / net / http / для выполнения фактических запросов.

Вы каждый раз передаете одну и ту же баночку с печеньем.

Что-то в этом роде (не точное или не проверенное):

package main

import (
    "net/http"
    "net/http/cookiejar"
)

func main() {
    cookieJar, _ := cookiejar.New(nil)

    client := &http.Client{
        Jar: cookieJar,
    }

    resp, err := http.PostForm("http://example.com/loginform",
        url.Values{"login": {"sdiscor"}, "password": {"sdiscor"}})
    resp, err := client.Get("http://example.com/")
}

5
задан Paige Watson 22 April 2009 в 17:24
поделиться

7 ответов

Забудьте о Java DART API и переключитесь на новый подход WebService API:

http://doubleclickadvertisers.blogspot.com/2009/06/webservices-api-jun-2nd-2009-release.html

1
ответ дан 14 December 2019 в 13:46
поделиться

Это API веб-сервисов или файл JAR, который вы предоставили? В последнем случае J # может быть опцией, и в этой теме есть несколько других опций моста: http://www.velocityreviews.com/forums/t140810-java-c-interop.html

1
ответ дан 14 December 2019 в 13:46
поделиться

As an aside may I recommend writing your web service in a RESTful way, rather (or in conjunction with) then SOAP? The benefit will be interoperability between any language that you may want to consume your service in the future, rather then only ones that can generate code based on WSDL. Just a thought.

0
ответ дан 14 December 2019 в 13:46
поделиться

Да, вы можете сделать это, и некоторое время назад нам приходилось делать нечто очень похожее.

Doubleclick API основан на Java и, по сути, представляет собой набор методов для опроса базы данных.

Вам нужно обернуть эти методы внутри веб-службы, используя что-то вроде Axis2, а затем развернуть веб-службу на сервере Tomcat (все это с открытым исходным кодом). Это предоставляет веб-сервис, и вы можете затем вызывать веб-сервис из любого, что вам нравится.

Итак, в вашем случае вы добавляете ссылку на веб-сервис в Visual Studio, а затем ваш класс C # будет вызывать веб-сервис, который вызывает Doubleclick Java. method.

Фактический код Java минимален (приблизительно 10 строк), поскольку все, что он делает, - это вызов, а затем форматирует вывод. Развертывание занимает больше времени, чем написание кода!

Наша среда разработки Java - Eclipse, и я написал об этом в блоге здесь .

вы добавляете ссылку на веб-сервис в Visual Studio, а затем ваш класс C # будет вызывать веб-сервис, который вызывает Java-метод Doubleclick.

Фактический код Java минимален (приблизительно 10 строк), поскольку все, что он делает, - это вызов, а затем форматирует вывод. Развертывание занимает больше времени, чем написание кода!

Наша среда разработки Java - Eclipse, и я написал об этом в блоге здесь .

вы добавляете ссылку на веб-сервис в Visual Studio, а затем ваш класс C # будет вызывать веб-сервис, который вызывает Java-метод Doubleclick.

Фактический код Java минимален (приблизительно 10 строк), поскольку все, что он делает, - это вызов, а затем форматирует вывод. Развертывание занимает больше времени, чем написание кода!

Наша среда разработки Java - Eclipse, и я написал об этом в блоге здесь .

1
ответ дан 14 December 2019 в 13:46
поделиться

IKVM.NET может быть вашим решением. Это виртуальная машина Java, которая переводит байт-код Java в .NET IL.

Вы можете скомпилировать Java API (предоставленный в виде jar или исходных файлов) с помощью ikvmc.exe в сборку .NET и затем ссылаться на эту сборку из вашего проекта C #.

IKVM действительно имеет ограниченную поддержку пользовательских интерфейсов Java (AWT), но поскольку это API, это не должно иметь значения.

Я не пробовал это сам, поэтому могу не гарантирую, что это действительно работает.

См. http://weblog.ikvm.net/story.aspx/faq

3
ответ дан 14 December 2019 в 13:46
поделиться

Я бы сказал, что использование слоя J # может быть хорошим вариантом. Я использовал его лишь однажды назад, но он помог мне.

0
ответ дан 14 December 2019 в 13:46
поделиться

На самом деле мы пошли несколько другим способом сделать это.

  1. Веб-служба C # теперь вызывает класс Java с помощью javaw.exe (используя Process) и передает идентификатор (GUID) .
  2. GUID используется в качестве имени файла для XML-файла, записанного классом java.
  3. Если процесс (javaw) завершается без ошибок, веб-служба затем открывает файл (GUID) .xml и извлекает данные.

Хотя это не оптимальный метод, он работает для этого процесса в краткосрочной перспективе, а в долгосрочной перспективе, когда решение SOAP становится доступным, веб-сервис легко обновляется.

0
ответ дан 14 December 2019 в 13:46
поделиться