我可以使用XmlHttpRequest调用批量地址解析器请求吗?

时间:2019-01-22 13:10:44

标签: here-api

我正在尝试使用XmlHttpRequest对here.com API进行批量地理编码调用,但没有任何结果

根据HERE.COM文档,我可以对进行批量地理编码调用

https://batch.geocoder.api.here.com/6.2/jobs?app_id={YOUR_APP_ID}&pp_code={YOUR_APP_CODE}&mailto=<your_email_address>&outdelim=|&outcols=displayLatitude,displayLongitude,locationLabel,  houseNumber,street,district,city,postalCode,county,state,country&outputcombined=false

然后在POST正文

recId|searchText|country
0001|Invalidenstraße 116 10115 Berlin|DEU
0002|Am Kronberger Hang 8 65824 Schwalbach|DEU
0003|425 W Randolph St Chicago IL 60606|USA

我正在尝试使用JavaScript使用XmlHttpRequest并使用以下代码获得一些响应:

geocode = function()    {
    var xhttp = new XMLHttpRequest();

    var osmURL="https://batch.geocoder.api.here.com/6.2/jobs"
        +"?app_id=0aApOideNwpiPyzejpFk"
        +"&app_code=Hz7Rz_PodmUhdG8KCDSgk_g"
        +"&mailto=joan.the.best@gmail.com"
        +"&outdelim=|"
        +"&outcols=recId,displayLatitude,displayLongitude"
        +"&outputcombined=false"        
        +"&language=de-DE"

    xhttp.onreadystatechange = function() {
        alert(xhttp.responseText);
        if (this.readyState == 4 && this.status == 200) {
            alert(xhttp.responseText);
        }
    };

    xhttp.onload = function() {
        alert(xhttp.responseText);
        alert(this.status);
        if (this.readyState == 4 && this.status == 200) {
            alert(xhttp.responseText);
        }
    };

    var postToSend = 
        "recId|searchText|country" + "\r\n" +
        "0001|Invalidenstraße 116 10115 Berlin|DEU" + "\r\n" + 
        "0002|Am Kronberger Hang 8 65824 Schwalbach|DEU" + "\r\n" +
        "0003|425 W Randolph St Chicago IL 60606|USA";

    xhttp.open("POST", osmURL, true);
    xhttp.send(postToSend);
}

我希望输出类似于:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:SearchBatch xmlns:ns2="http://www.navteq.com/lbsp/Search-Batch/1">
  <Response>
    <MetaInfo>
      <RequestId>qr9jVjuoFe1mULUvBlXr7UK4dM8BpAkO</RequestId>
    </MetaInfo>
    <Status>submitted</Status>
    <TotalCount>0</TotalCount>
    <ValidCount>0</ValidCount>
    <InvalidCount>0</InvalidCount>
    <ProcessedCount>0</ProcessedCount>
    <PendingCount>0</PendingCount>
    <SuccessCount>0</SuccessCount>
    <ErrorCount>0</ErrorCount>
    </Response>
</ns2:SearchBatch>

,但不返回任何结果,甚至没有状态。我已经完成了各个呼叫,没有问题,因此URL必须可以访问。

您尝试过这样的事情吗?

预先感谢, 琼。

编辑:进行更多调查,我收到“ XMLHttpRequest:网络错误0x80070005,访问被拒绝”错误,以及与CORS相关的信息。如何提供有效的凭据以便允许访问?谢谢。

1 个答案:

答案 0 :(得分:0)

也许“ outdelim”参数的编码是罪魁祸首;换管道'|'到“%7C”。这也适用于“ indelim”。

另请参阅The Batch Geocoder API returns only failed status