Я искал в Google и здесь, в стеке, но из-за моего ограниченного опыта в C# и SSIS у меня возникли некоторые проблемы.
Мои шаги в этом пакете служб SSIS следующие:
1) У меня есть задача SQL, подключенная к a для l oop, которая только указывает, сколько раз я должен повторяться в Foorl oop контейнер, который = 1
2) Внутри Foorl oop контейнер имеет задачу потока данных
3) В задаче потока данных я использую источник OLEDB для получения адресов из SQL table
4) Я подключаю этот источник OLEDB к задаче «Сценарий», из которой следующий скрипт «Должен» вернуть мой XML ответ, из которого я хочу вернуть широту и долготу. Он не возвращает ответ, который я хочу.
Пример адреса - Бейхингер Штрассе 160 DE-71726 БЕННИНГЕН ГЕРМАНИЯ
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
string url = "http://dev.virtualearth.net/REST/v1/Locations?addressLine={0}&output=xml&key={1}";
var Address = Row.Address;
var wGet = WebRequest.Create(String.Format(url, Address, Variables.APIkey));
wGet.Method = WebRequestMethods.Http.Get;
var response = wGet.GetResponse();
var status = ((HttpWebResponse)response).StatusDescription;
Console.WriteLine("Input: " + Address);
if (status == "OK")
{
StreamReader reader = new StreamReader(response.GetResponseStream());
string responseFromServer = reader.ReadToEnd();
reader.Close();
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(responseFromServer);
var nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
nsmgr.AddNamespace("Point", "http://schemas.microsoft.com/search/local/ws/rest/v1");
var latNode = xmlDoc.DocumentElement.SelectSingleNode("/ResourceSets/ResourceSet/Resources/Location/Point/Latitude", nsmgr);
var lngNode = xmlDoc.DocumentElement.SelectSingleNode("/ResourceSets/ResourceSet/Resources/Location/Point/Longitude", nsmgr);
if (latNode != null && lngNode != null)
{
var numberFormatInfo = new NumberFormatInfo { NumberDecimalSeparator = "." };
Row.Latitude = decimal.Parse(latNode.InnerText, numberFormatInfo);
Row.Longitude = decimal.Parse(lngNode.InnerText, numberFormatInfo);
Row.FullResponse = responseFromServer.ToString();
}
else
{
//Set to null
Row.Latitude_IsNull = true;
Row.Longitude_IsNull = true;
Row.FullResponse = responseFromServer.ToString();
}
}
else
{
//Set to null
Row.Latitude_IsNull = true;
Row.Longitude_IsNull = true;
Row.FullResponse_IsNull = true;
}
response.Close();
}
}
Ответ i get is,
Copyright © 2020 Microsoft и ее поставщики. Все права защищены. К этому API нельзя получить доступ, а содержимое и любые результаты не могут быть использованы, воспроизведены или переданы каким-либо образом без письменного разрешения express корпорации Microsoft. http://dev.virtualearth.net/Branding/logo_powered_by.png 200OKValidCredentialsb9a94b411dc246ea82d161dae5e7a0c3 | DU00000D73 | 0.0.0.1 | Ref A: ACDD23537F6649F6B2F66333BB6D6D01 Ссылка B: DB3EDGE0918 Ссылка C: 2020-02-12T11: 25: 05Z0
Мне нужен правильный вызов при получении URL-адреса, чтобы я мог получить долготу и широту - http://dev.virtualearth.net/REST/v1/Locations?addressLine=Beihinger%20Strasse%20160%20DE-71726%20BENNINGEN%20GERMANY&output=xml&key= {APIkey}
Буду признателен за любую помощь в том, что мне не хватает?