[R] problem post request with RCurl

Duncan Temple Lang duncan at wald.ucdavis.edu
Thu Nov 19 05:18:26 CET 2009


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 at 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.




More information about the R-help mailing list