2012-01-11 2 views
1

Я ищу способ установки сеанса или файла cookie на внешнем сайте с использованием запроса на соединение.set session using connection request

У меня есть сайт А, который отправляет запрос на сайт Б:

  url = new URL(urlSCS + "test"); 
      connection = (HttpURLConnection)url.openConnection(); 
      connection.setRequestMethod("POST"); 
      connection.setRequestProperty("Content-Type", 
       "application/x-www-form-urlencoded"); 

      connection.setRequestProperty("Content-Length", "" + 
        Integer.toString(urlParameters.getBytes().length)); 
      connection.setRequestProperty("Content-Language", "en-EN"); 

      connection.setUseCaches (false); 
      connection.setDoInput(true); 
      connection.setDoOutput(true); 

      //Send request 
      DataOutputStream wr = new DataOutputStream (
         connection.getOutputStream()); 
      wr.writeBytes (urlParameters); 
      wr.flush(); 
      wr.close(); 

      //Get Response  
      InputStream is = connection.getInputStream(); 
      BufferedReader rd = new BufferedReader(new InputStreamReader(is)); 
      String line; 
      StringBuffer response = new StringBuffer(); 
      while((line = rd.readLine()) != null) { 
      response.append(line); 
      response.append('\r'); 
      } 
      rd.close(); 

      responseSCS = response.toString(); 
      return responseSCS; 

     } catch (Exception e) { 

      e.printStackTrace(); 
      return null; 

     } finally { 

      if(connection != null) { 
      connection.disconnect(); 
      } 
     } 

А на сайт Б я ​​хочу, чтобы создать сеанс или Cookie. Является ли это возможным?

Я понимаю, что для установки cookie или сеанса должна отображаться страница, beccouse cookie и сеанс написаны в browswer. Но может быть, есть какой-то способ?

+0

вы можете создать cookie с использованием 'cookie' класса в java и отправить этот файл cookie в ваш запрос. если это то, что вам нужно. Ваш вопрос немного неясен. – RanRag

+0

Возможный дубликат [Как получить файл cookie с внешнего веб-сайта?] (Http://stackoverflow.com/questions/8820033/how-do-i-get-a-cookie-from-an-external-webiste) –

ответ

3

После первого подключения вы можете получить идентификатор сессии, как это:

String mySession = connection.getHeaderField("JSESSIONID"); 

И в следующих соединениях вы можете сохранить сессию следующим образом:

connection.setRequestProperty("Cookie", "JSESSIONID=" + mySession); 

Таким образом, вы можете также получить/отправить файлы cookie, так как ваша программа java была браузером или проводила сеанс среди разных запросов страниц ... Дополнительная информация:

http://docs.oracle.com/javase/1.5.0/docs/guide/deployment/deployment-guide/cookie_support.html

См раздел «Программный доступ к Cookies»

Мы используем «JSESSIONID» предполагая, что сайт B является сайт сервера Java, изменить его на другое имя, если это другой тип сервера