[OSM-dev] api update question
Rob
rob at coolbegin.com
Mon Jan 21 19:10:44 GMT 2008
hmm, i wonder if the 417 error is from lighthttpd or the api and if so what
it receives.
Do you know if there is a "sandbox" server api to play with ? i gues not...
thanks for your download code, mine is just a oneliner (i'm lazy, i know :)
XmlDocument doc = new XmlDocument(); doc.Load(strUrl);
i'll digg further in the REST api examples
2008/1/21, Igor Brejc <igor.brejc at gmail.com>:
>
> Rob wrote:
> > i'm trying to update a node from my project (C#)
> > when i do the web request, the GetResponse returns with "The remote
> > server returned an error: (417) Expectation Failed."
> >
> > do i need to change the content type ? or do i have to include
> > action='modify' in the node ?
> >
> >
> > string strXml = "<?xml version='1.0'
> > encoding='UTF-8'?><osm version='0.5' generator='OSMTAGEDITOR'><node
> > id='30226967' lat='50.8489498 ' lon='5.6878935' user='rubke'
> > timestamp='2008-01-20T14:56:52Z'><tag k='amenity' v='place_of_worship'
> > /><tag k='denomination' v='christian/catholic' /><tag k='name'
> > v='St-Servaasbasiliek' /><tag k='religion' v='christian'
> > /></node></osm>";
> >
> > HttpWebRequest HttpWRequest =
> > (HttpWebRequest)WebRequest.Create("
> http://api.openstreetmap.org/api/0.5/node/30226967");
> > HttpWRequest.PreAuthenticate = true;
> > HttpWRequest.Credentials = new NetworkCredential("xxxx",
> > "xxxx");
> > HttpWRequest.Method = "PUT";
> > HttpWRequest.ContentLength = strXml.Length;
> > HttpWRequest.ContentType = "text/plain";
> > using (StreamWriter writer = new
> > StreamWriter(HttpWRequest.GetRequestStream()))
> > {
> > writer.WriteLine (strXml);
> > }
> > WebResponse response = HttpWRequest.GetResponse();
> >
> > using (StreamReader reader = new
> > StreamReader(response.GetResponseStream()))
> > {
> > while ( reader.Peek() != -1)
> > {
> > Console.WriteLine(reader.ReadLine());
> > }
> > }
> > ------------------------------------------------------------------------
> Hello Rob,
>
> I haven't tried your code, Have you checked the HTTP traffic using some
> http tracker?
> This is what MSDN says about this error: Equivalent to HTTP status
> 417. ExpectationFailed indicates that an expectation given in an Expect
> header could not be met by the server.
> Also:
> HttpWRequest.ContentLength = strXml.Length;
>
> ContentLength is set in bytes, which is not necessary the same as the
> length of your string - it depends on encoding you use. Try to
> explicitly specify encoding.
>
> BTW: I haven't yet implemented the code for uploading to OSM server, but
> when downloading, I use WebClient class instead of
> HttpWebRequest/Response. Example (which works for me):
>
> public osm GetMap (double bottomLeftLng, double bottomLeftLat,
> double topRightLng, double topRightLat)
> {
> WebClient webClient = new WebClient ();
>
> UriBuilder requestUrl = new UriBuilder(GetCommandUrl ("map"));
> requestUrl.Query = String.Format
> (System.Globalization.CultureInfo.InvariantCulture,
> "bbox={0},{1},{2},{3}", bottomLeftLng, bottomLeftLat,
> topRightLng, topRightLat);
>
> byte[] data = webClient.DownloadData (requestUrl.Uri);
>
> osm map = null;
>
> using (MemoryStream stream = new MemoryStream (data))
> {
> XmlSerializer serializer = new XmlSerializer (typeof
> (osm));
> map = (osm)serializer.Deserialize (stream);
> }
>
> return map;
> }
>
> Regards,
> Igor
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/dev/attachments/20080121/45706eee/attachment.html>
More information about the dev
mailing list