2013-11-21 4 views
3

Я развернул адаптер на сервере Worklight, и есть некоторое требование, когда я вызываю адаптер внешней подсветки извне как сервер останова, он отлично работает и возвращает данные по мере необходимости, но вместо предоставления json-вывода он дает HTMLВызов адаптера Worklight из внешнего приложения

<!DOCTYPE html><html><head><meta charset="UTF-8" /><title>Invoke Procedure Result</title><script src="/secure/console/js/jquery-1.6.min.js"></script><style> textarea {  width: 100%; } .textwrapper {  margin: 5px 0;  padding: 3px; }</style></head><body onload="attachEvent();"><div><span id="invRes">Invocation Result of procedure: 'Authentication' from the Worklight Server</span>: </div><div id="target"><textarea rows="20">{ 
    "RESPONSE": { 

     "USER_ID": "292265" 
    }, 
    "errors": [ 
    ], 
    "info": [ 
    ], 
    "isSuccessful": true, 
    "responseHeaders": { 
     "Content-Length": "1195", 
     "Content-Type": "text\/xml;charset=ISO-8859-1", 
     "Date": "Thu, 21 Nov 2013 10:10:13 GMT", 
     "Server": "Oracle GlassFish Server 3.1.2.2", 
     "X-Powered-By": "Servlet\/3.0 JSP\/2.2 (Oracle GlassFish Server 3.1.2.2 Java\/Oracle Corporation\/1.7)" 
    }, 
    "responseTime": 4234, 
    "statusCode": 200, 
    "statusReason": "OK", 
    "totalTime": 4235, 
    "warnings": [ 
    ] 
}</textarea></div><script>function attachEvent() {$('#target').ajaxError(function(e, xhr, ajaxOptions, thrownError){$(this).text("Error: Please ensure that the XML input and XSL transformation are valid and try again.");});}function run_xslt() {var xml = $('#originalXML').val();var xsl = $('#originalXSL').val();$.post('/secure/dev/xslt',{'xml':xml,'xsl':xsl},function(data, textStatus, XMLHttpRequest){$('#target').empty();json = $("<textarea></textarea>");json.attr("rows",25);json.text(data);$('#target').append(json);$('#invRes').text('Result of Local XSL Transformation');},'text');}</script></body></html> 

в коде. Я снова разбираю его из HTML и сохраняю json в строку. Тогда только я могу его использовать. Это приведенный ниже адрес для вызова внешнего адаптера в соответствии с документами документооборота.

http://WorklightServer.com/secure/dev/invoke?adapter=Reports&procedure=Authentication&parameters=%5B%5D

+0

Можете ли вы предоставить более подробную информацию о том, что вы внедрили в вашей процедуре адаптера и то, что вы возвращаетесь из него – Srik

+0

я реализовали адаптер на версии 6 и Worklight тип возвращаемого значения xml в адаптере. Если я запускаю адаптер с сервера worklight с помощью метода процедуры invoke, он дает выход json, но я получаю доступ с url, он возвращает html, который содержит json вместо json, как указано выше. –

+0

@vishal_g Можете ли вы предоставить ссылку на документацию о рабочем свете, которая описывает эту тему? –

ответ

4

удалить/DEV/компонент из URL, это только для целей развития легкостью. без него вы получите свой JSON.

+0

Да, теперь он удаляет json после удаления/dev, но он добавляет/* - secure-jsonData * /. И когда я даю ajax-вызов, возвращаемые данные я не получаю. В браузере он показывает json-данные с/* - secure jsondata * /. Помогите мне с этим –

+1

, вы всегда получите JSON, завернутый в/* secure * /. Это делается для предотвращения использования WL-сервера для атак XSS – Anton

1

У меня была такая же проблема, и после прочтения ответов Антона я установил «dataType» вызова Ajax на «текст», а затем отредактировал ответ, чтобы удалить/* - secure- и * /, а затем проанализировал строку получить JSON «JSON.parse (theString)»

$.ajax({ 
      type: 'POST', 
      url: ajaxURL,    
      async: true, 
      cache: true, 
      timeout: 5, 
      dataType: "text", 
      success: function(data){      
       data = data.replace("/*-secure-",""); 
       data = data.replace("*/","");     
       var dataJSON = JSON.parse(data);      
       //Do success     
      }, 
      error: function(data, statusCode){ 
       //Do error     
      } 
     });