Получение сеанса от HttpAdapter к адаптеру на основе Java

Есть ли способ получить сеанс, созданный в httpAdapter, в класс java в адаптере? Я подключаюсь к https://jazz.net/ с помощью httpadapter, но теперь я хочу использовать код Java для подключения к тому же URL-адресу в адаптере. Поэтому я не знаю, как получить доступ к уже созданному сеансу.

Вот мой код подключения:

In javaScript, 
function login(){
var lpath = getLoginPath();
var input = {
    method : 'post',
    returnedContentType : 'html',
    path : lpath,
    parameters : {
        j_password : passwd,
        j_username : username
    }

};

var request = WL.Server.getClientRequest();
UserSession = request.getHeader("Cookie"); // here i am setting the value for a global variable UserSession.
return WL.Server.invokeHttp(input);
}

function getConnection(){
var instance = new com.worklight.customcode.PostRequest();

var rspath = getRootServicesPath();

var input = {
    method : 'get',
    returnedContentType : 'xml',
    path : rspath
};
return {
    result : instance.getXml(UserSession) // Here i am passing the value of session cookie into the java class 
};}

В классе Java,

class PostRequest{
 public String getXml(String cookieString){
    String params = "?offlineData={'projectAreaItemId':'_iTuLUmxfEeKR3t32SVbLKQ','executables':[{'terItemId':'_TNoyQW6qEeKR3t32SVbLKQ','scriptItemId':'_DF89AW6qEeKR3t32SVbLKQ'}]}";
    String url = "https://jazz.net/sandbox02-qm/secure/service/com.ibm.rqm.execution.common.service.IOfflineExecutionRestService"
            + params;
URLConnection connection = new URL(url).openConnection();
connection = new URL(url).openConnection();
    connection.setRequestProperty("User-Agent", "yes");
    connection.setRequestProperty("Content-Type",
            "application/x-www-form-urlencoded");
    connection.setRequestProperty("Accept-Encoding", "gzip");
    connection.setRequestProperty("Accept", "application/xml");
    connection.setRequestProperty("Cookie", cookieString);
    connection.setDoInput(true);
    connection.setDoOutput(true);
    ((HttpURLConnection) connection).setRequestMethod("POST");
    connection.setDoOutput(true);
String result = "";
        InputStream resp = connection.getInputStream();
        StringBuilder s = inputStreamToString(resp);
return s;
}
}

person Ashwini Maddala    schedule 16.04.2013    source источник


Ответы (1)


Вам не нужно обращаться к идентификатору сеанса, так как он у вас уже есть. Написанный вами класс Java является частью сеанса адаптера или области видимости.

Что вам нужно сделать, так это объявить свой класс в адаптере. Что-то вроде этого:

Класс

Class myHTTPClient
// implementation code goes here - the java code to connect to the same URL as in the adapter XML.

Адаптер

var httpClient = new com.myHTTPClient
// your adapter code

Таким образом, Java находится в той же области, что и адаптер, поэтому нет необходимости «получать» идентификатор сеанса.

Чтобы передать JSESSIONID также в POST из кода Java, следуйте примеру, приведенному в WL.Server.invokeHttp API (внизу страницы). В JavaScript адаптера реализуйте пример... response.responseHeader содержит заголовок "Set-Cookie", из которого вы можете извлечь JSESSIONID, передать его и использовать.

person Idan Adar    schedule 17.04.2013
comment
но когда я пытаюсь сделать сообщение из класса java, он снова запрашивает учетные данные пользователя - person Ashwini Maddala; 18.04.2013
comment
Я использовал эти две строки во время входа в httpAdapter, где Cookies — это глобальная переменная. Я попытался передать это классу java. он передается только правильно. но я не знаю, делаю ли я что-то неправильно при установлении соединения в классе Java. запрос var = WL.Server.getClientRequest(); Файлы cookie = request.getHeader(Cookie); - person Ashwini Maddala; 18.04.2013
comment
Не используйте комментарии для кода. ИЗМЕНИТЬ свой вопрос. Добавьте свой java-код, добавьте свой javascript. - person Idan Adar; 18.04.2013
comment
Кроме того, имя заголовка — Set-Cookie. - person Idan Adar; 18.04.2013
comment
Я пытался это сделать, но получаю ответ о неверном запросе (код состояния 400) - person Ashwini Maddala; 25.04.2013