Hi
I have a server (on Linux, running on Tomcat) with and empty dhis app running (version 2.14)
I would like to populate it with data (and metadata) using the web API.
I tried an example from the documentation:
I created a file called pi.xml:
<constant name="PI" xmlns="[http://dhis2.org/schema/dxf/2.0](http://dhis2.org/schema/dxf/2.0) "> <value>3.14159265359</value> </constant>
and gave this command from my windows command line:
C:\>curl.exe -d @pi.xml "http://<my host name>:8080/dhis/api/constants" -H "Content-Type:application/xml" -u admin:district -v
The server responded with
<html><head><title>Apache Tomcat/7.0.52 (Debian) - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 405 - Request method 'POST' not supported</h1><HR size="1" noshade="noshade"><p><b>type</b>Status report</p><p><b>message</b> <u>Request method 'POST' not supported</u></p><p><b>description</b> <u>The specified HTTP method is not allowed for the requested resource.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/7.0.52 (Debian)</h3></body></html>
when I tried the same with https (instead of http), I got the reply:
C:\>curl.exe -d @pi.xml "https://<my host name>:8080/dhis/api/constants" - H "Content-Type:application/xml" -u admin:district -v * Hostname was NOT found in DNS cache * Trying <my host ip address>... * Connected to <my host name> (<my host ip adress>) port 8080 (#0) * schannel: SSL/TLS connection with <my host name> port 8080 (step 1/3)
* schannel: checking server certificate revocation * schannel: sending initial handshake data: sending 171 bytes... * schannel: sent initial handshake data: sent 171 bytes * schannel: SSL/TLS connection with <my host name> port 8080 (step 2/3)
* schannel: failed to receive handshake, need more data * schannel: SSL/TLS connection with <my host name> port 8080 (step 2/3)
* schannel: encrypted data buffer: offset 144 length 4096 * schannel: next InitializeSecurityContext failed: SEC_E_INVALID_TOKEN (0x80090308) - The token supplied to the function is invalid * Closing connection 0 * schannel: shutting down SSL/TLS connection with <my host name> port 8080 * schannel: clear security context handle * schannel: clear credential handle curl: (35) schannel: next InitializeSecurityContext failed: SEC_E_INVALID_TOKEN (0x80090308) - The token supplied to the function is invalid
The same command (using https with my windows curl) was successful when sent to the dhis web site demo app
I am guessing that creating objects in dhis requires a secure connection and that my server does not currently support it. (or does not support the specific ssh protocol that curl uses?)
Is this the problem or am I missing something?
Thanks,
Lavi