2014-03-25 6 views
1

phonegap을 사용하여 Sencha-Touch 앱을 패키징하려고 할 때 문제가 발생했습니다. 모든 것은 phonegap에서 WFS에 액세스하는 것 외에는 잘 작동합니다. (그리고 앱은 브라우저에서 실행해도 문제가 없습니다. WFS 액세스는 정상입니다)phonegap WFS 프록시 문제

내 phonegap 버전은 2.9이며, openlayer 버전은 2.13입니다.

여기 간단한 코드를 제공합니다. 다음 사이트의 예제 코드를 확인할 수도 있습니다. http://openlayers.org/dev/examples/wfs-filter.html

var rootUrl = window.location.protocol + "//"+ window.location.host + '/'; var map;

function init() { 

     map = new OpenLayers.Map({ 
      div: "map", 
      layers: [ 
      new OpenLayers.Layer.WMS(
       "Natural Earth", 
       "http://demo.opengeo.org/geoserver/wms", 
       { layers: "topp:naturalearth" } 
       ), 
      new OpenLayers.Layer.Vector("WFS", { 
       strategies: [new OpenLayers.Strategy.BBOX()], 
       protocol: new OpenLayers.Protocol.WFS({ 
        url: rootUrl + 'proxy.py?url=http://demo.opengeo.org/geoserver/wfs', 
        featureType: "tasmania_roads", 
        featureNS: "http://www.openplans.org/topp" 
       }), 
       styleMap: new OpenLayers.StyleMap({ 
        strokeWidth: 3, 
        strokeColor: "#333333" 
       }), 
      }) 
      ], 
      center: new OpenLayers.LonLat(146.7, -41.8), 
      zoom: 6 
     }); 

    } 

phonegap에는 WMS에 액세스하는 데 문제가 없지만 WFS를 시도하면 작동하지 않습니다.

앞서 보여준 링크와 비교하면지도에 도로가 표시되며 WFS를 통해 도로가 표시됩니다. 내 phonegap 앱에서 도로가 표시되지 않습니다.

나는 그것이 WFS 이슈인지, 아니면 전화 갭 문제인지 궁금해. 내 phonegap 앱에서 WFS에 대한 내 액세스가 차단되었습니다.

제게 몇 가지 제안과 힌트를주세요. 나는 정말로 감사 할 것이다.

function getLayerList() { 
     $.ajax({ url: rootUrl + 'proxy.py?url=http://192.168.0.23/LBEService/Service1.svc/GetEventList', 
      //async: false, 
      data: JSON.stringify({}), 
      type: "POST", 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      success: function (result) { 
       console.log(result); 
       $("#demo").html(result[0].event_NAME); 
      }, 
      error: function (xhr, ajaxOptions, thrownError) { 
       alert(xhr.status); 
       alert(thrownError); 
      } 
     }).done(function() { 

     }); 
    } 

답변

0

WFS를 호스팅하는 도메인을 화이트리스트에 추가 했습니까? 안드로이드 폰갭의 window.location.protocol에

http://docs.phonegap.com/en/1.9.0/guide_whitelist_index.md.html

+0

답장을 보내 주셔서 감사합니다. xml 폴더 아래의 config.xml 파일에서이 ""을 찾을 수 있습니다. 이는 모든 도메인에 액세스 할 수 있지만 WFS에 대한 내 액세스를 여전히 무시하고 있음을 의미합니다. 좀 더 힌트를 주시겠습니까, 정말 고맙습니다. – Will

+0

또한 phonegap의 모든 도메인에 대한 액세스를 비활성화하면 WMS에 액세스 할 수 없으므로 ""이 실제로 작동합니다. – Will

+0

사파리를 통해 요청을 살펴 보았습니까? 감찰관이나 피들러 등을 제거 하시겠습니까? 그들이 실제로 전화 걸기에서 벗어나고 그들이 어떻게 생겼는지 확인합니다. – Scott

0

은 '파일'입니다 및 window.location.hostname ""그래서 당신의 응용 프로그램은 아마 파일을 찾고됩니다 //proxy.py? 귀하의 장치에는 존재하지 않습니다.

따라서, 그에 따라 OpenLayers.Proxy을 내가 프로토콜을 테스트하는이 문제를 해결하고 설정하려면 : 귀하의 경우 그래서

if(location.protocol == 'file:') { 
    OpenLayers.ProxyHost = ""; 
} else { 
    OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url="; 
} 

을, 프로토콜 인 경우 '파일', 나는 '당신이 드롭 할 필요가 있다고 생각 proxy.py? '

팁 : PC (Chrome : // inspect/# devices)에서 Chrome을 사용하여 Android 앱을 디버그하면 Android가 만드는 요청이 표시됩니다.