Use curlPerform(url = 'http://pubchem.ncbi.nlm.nih.gov/pug/pug.cgi', postfields = q)
That gives me: <PCT-Data> <PCT-Data_output> <PCT-OutputData> <PCT-OutputData_status> <PCT-Status-Message> <PCT-Status-Message_status> <PCT-Status value="running"/> </PCT-Status-Message_status> </PCT-Status-Message> </PCT-OutputData_status> <PCT-OutputData_output> <PCT-OutputData_output_waiting> <PCT-Waiting> <PCT-Waiting_reqid>31406321645402938</PCT-Waiting_reqid> </PCT-Waiting> </PCT-OutputData_output_waiting> </PCT-OutputData_output> </PCT-OutputData> </PCT-Data_output> </PCT-Data> Rajarshi Guha wrote: > Hi, I am trying to use a CGI service (Pubchem PUG) via RCurl and am > running into a problem where the data must be supplied via POST - but I > don't know the keyword for the argument. > > The data to be sent is an XML fragment. I can do this via the command > line using curl: I save the XML string to a file called query.xml and > then do > > curl -d @query.xml "http://pubchem.ncbi.nlm.nih.gov/pug/pug.cgi" > > I get the expected response. More importantly, the verbose option shows: > >> Accept: */* >> Content-Length: 1227 >> Content-Type: application/x-www-form-urlencoded > > However, when I try to do this via RCurl, the data doesn't seem to get > sent: > > q <- "<PCT-Data> <PCT-Data_input> <PCT-InputData> > <PCT-InputData_query> <PCT-Query> > <PCT-Query_type> <PCT-QueryType> > <PCT-QueryType_qas> > <PCT-QueryActivitySummary> > <PCT-QueryActivitySummary_output > value=\"summary-table\">0</PCT-QueryActivitySummary_output> > <PCT-QueryActivitySummary_type > value=\"assay-central\">0</PCT-QueryActivitySummary_type> > <PCT-QueryActivitySummary_scids> > <PCT-QueryUids> > <PCT-QueryUids_ids> > <PCT-ID-List> > <PCT-ID-List_db>pccompound</PCT-ID-List_db> > <PCT-ID-List_uids> > <PCT-ID-List_uids_E>3243128</PCT-ID-List_uids_E> > </PCT-ID-List_uids> > </PCT-ID-List> > </PCT-QueryUids_ids> > </PCT-QueryUids> > </PCT-QueryActivitySummary_scids> > </PCT-QueryActivitySummary> </PCT-QueryType_qas> > </PCT-QueryType> </PCT-Query_type> </PCT-Query> > </PCT-InputData_query> </PCT-InputData> </PCT-Data_input></PCT-Data>" > >> postForm(url, q, style="post", .opts = list(verbose=TRUE)) > * About to connect() to pubchem.ncbi.nlm.nih.gov port 80 (#0) > * Trying 130.14.29.110... * connected > * Connected to pubchem.ncbi.nlm.nih.gov (130.14.29.110) port 80 (#0) >> POST /pug/pug.cgi HTTP/1.1 > Host: pubchem.ncbi.nlm.nih.gov > Accept: */* > Content-Length: 0 > Content-Type: application/x-www-form-urlencoded > > As you can see, the data in q doesn't seem to get sent (content-length = > 0). > > Does anybody have any suggestions as to why the call to postForm doesn't > work, but the command line call does? > > Thanks, > > ---------------------------------------------------- > Rajarshi Guha | NIH Chemical Genomics Center > http://www.rguha.net | http://ncgc.nih.gov > ---------------------------------------------------- > Q: Why did the mathematician name his dog "Cauchy"? > A: Because he left a residue at every pole. > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.