Sum J <[email protected]> writes:
> My xml file is located in local network :
> http://192.168.43.109/DevMgmt/NetAppsDyn.xml
>
> Below is a part content of above xml I want to update :
>
> <nadyn:ProxyConfig>
> <dd:ResourceURI/>
> <dd:Port/>
> <dd:ProxySupport>off</dd:ProxySupport>
> </nadyn:ProxyConfig>
>
> I want to set value for 'ResourceUI' and 'Port' field in above xml.
> I have used below code :
>
> data = {
> 'ResourceURI':'web-proxy.xxx.yy.com',
> 'Port':8080
> }
>
> URL = 'http://192.168.75.165/DevMgmt/NetAppsDyn.xml'
>
> # content type
> head = {'Content-type': 'text/xml'}
> # sending get request
> gr= requests.get(url=URL)
> print gr
>
> # sending put request
> r = requests.put(url=URL, data=data,headers=head)
> print r.status_code
> # extracting response text
> output_xml = r.text
> print("The op xml is:%s" % output_xml)
>
> Issue : The fields are not getting updated in xml using put request. I am
> able to see the response for get (request) , but for put request it is
> throwing errror code : 301 , resource has been moved permanently.
This may not be a Python question.
You are sending your data
("{'ResourceURI':'web-proxy.xxx.yy.com', 'Port':8080})
to the web service under "http://192.168.75.165/DevMgmt/NetAppsDyn.xml".
Apparently, this web service does not interpret the data in the way you
expect.
Note, that you do not send an XML document to "NetAppsDyn.xml"
(despite your `Content-type="text/xml"`). The typical (WevDAV)
"put" would require that "data" contains a complete replacement
for the object to be replaced, not just some modifications
(of course, the object might have a specialized "put" which could
support partial updates -- but apparently, in your current
situation, this is either not the case or the "put" involved
expects to get the replacement information in a different way).
I would approach your task as follows:
1. Fetch the original XML
2. Use one of Python's XML libraries (I would use "lxml")
to create the modified XML
3. "put" the modified XML to the server
--
https://mail.python.org/mailman/listinfo/python-list