Mendapatkan sesi dari HttpAdapter ke Adaptor berbasis Java

Apakah ada cara untuk memasukkan sesi yang dibuat di httpAdapter ke kelas Java di adaptor? Saya terhubung ke https://jazz.net/ dengan httpadapter, tetapi sekarang saya ingin menggunakan beberapa kode Java untuk terhubung ke url yang sama di adaptor. Jadi saya tidak tahu cara mengakses sesi yang sudah dibuat.

Ini kode koneksi saya:

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 
};}

Di Kelas 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 sumber


Jawaban (1)


Anda tidak perlu mengakses ID sesi, karena Anda sudah "memilikinya". Kelas Java yang Anda tulis adalah bagian dari sesi adaptor, atau, cakupan.

Yang perlu Anda lakukan adalah mendeklarasikan kelas Anda di adaptor. Sesuatu seperti ini:

Kelas

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

Adaptor

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

Dengan cara ini Java berada dalam cakupan yang sama dengan adaptor, sehingga tidak perlu "mendapatkan" ID sesi.

Untuk melewati JSESSIONID juga di POST dari kode Java, ikuti contoh yang diberikan di WL.Server.invokeHttp API (bagian bawah halaman). Dalam JavaScript adaptor, terapkan contoh... respon.responseHeader berisi header "Set-Cookie", dari mana Anda dapat mengekstrak JSESSIONID, menyebarkannya dan menggunakannya.

person Idan Adar    schedule 17.04.2013
comment
tetapi ketika saya mencoba membuat posting dari kelas Java, ia menanyakan kredensial pengguna lagi - person Ashwini Maddala; 18.04.2013
comment
Saya telah menggunakan 2 baris ini saat login di httpAdapter, di mana Cookies adalah variabel global. Saya mencoba meneruskannya ke kelas Java. itu hanya diteruskan dengan benar. Tetapi saya tidak tahu apakah saya melakukan sesuatu yang salah dalam membuat koneksi di kelas Java. var permintaan = WL.Server.getClientRequest(); Cookie = permintaan.getHeader(Cookie); - person Ashwini Maddala; 18.04.2013
comment
Jangan gunakan komentar untuk kode. EDIT pertanyaan Anda. Tambahkan kode java Anda, tambahkan javascript Anda. - person Idan Adar; 18.04.2013
comment
Juga, nama headernya adalah Set-Cookie. - person Idan Adar; 18.04.2013
comment
Saya mencoba melakukan itu, tetapi saya mendapat respons yang mengatakan permintaan buruk (kode status 400) - person Ashwini Maddala; 25.04.2013