Difference between revisions of "Example Clients"

From Textserver wiki
Jump to: navigation, search
(Example Clients for Interactive Jobs)
Line 19: Line 19:
 
You'll need to replace <tt>SERVICENAME</tt> with the actual name of the desired service, and adapt the list of parameters in the multipart form to those expected by the service.
 
You'll need to replace <tt>SERVICENAME</tt> with the actual name of the desired service, and adapt the list of parameters in the multipart form to those expected by the service.
  
=== Python ===
+
* === [Python Interactive Client|Python]  ===
  
 
<syntaxhighlight lang="python" line="1" >
 
<syntaxhighlight lang="python" line="1" >

Revision as of 12:55, 20 January 2016

To call a TextServer service from a client program running on your side, this client needs to send the appropriate request in the right format.

The request is a standard HTTP POST request with a multiform part containing the same information you would submit via the web interface.

Below you'll find a list of example client programs in different programming languages.

The same code can be used to access any TextServer service with small variations:

  • Simply change the service name in the URL to access a different service. You can find out the service name at the top of the "Execute" form of your subscribed services.
  • Replace the parameters in the example client with the parametes that the called service requires. Rules are simple:
    • Language identification service does not require a "language" parameter, but the other services do.
    • All services require a "interactive" parameter stating whether the job is interactive or batch.
    • All services require either a "text_input" parameter (for interactive jobs) or a "input_file" parameter (for batch jobs).
    • You can find out the name of any other specific parameters for a service in the "Execute" form of your subscribed services.

Example Clients for Interactive Jobs

Below there is a list of example of how to call a service named SERVICENAME from different programming languages You'll need to replace SERVICENAME with the actual name of the desired service, and adapt the list of parameters in the multipart form to those expected by the service.

  • === [Python Interactive Client|Python] ===
 1 #! /usr/bin/python
 2 
 3 ########################################################################
 4 #
 5 #  Example client to submit an interactive request to TextServer 
 6 # SERVICENAME service. 
 7 #  Input may be a plain text or a text file.  No ZIP files.
 8 #  Output will be in the requested format (XML, json, conll)
 9 #
10 ########################################################################
11 
12 
13 # import required libraries
14 import urllib2
15 # You may need to install "poster" python module for these two:
16 from poster.encode import multipart_encode
17 from poster.streaminghttp import register_openers
18 
19 # Register the streaming http handlers with urllib2
20 register_openers()
21 
22 # set query elements
23 text = raw_input('Text to analyze: ')
24 lang = raw_input('Language: ')
25 out = raw_input('Output format (xml,json,conll,naf): ')
26 user = raw_input('TextServer Username: ')
27 pwd = raw_input('TextServer Password: ')
28 
29 # Encode query in a form-data.
30 # 'headers' contains the necessary Content-Type and Content-Length.
31 # 'datagen' is a generator object that yields the encoded parameters.
32 datagen, headers = multipart_encode({'username':user,
33                                      'password':pwd,
34                                      'text_input':text,
35                                      'language':lang,
36                                      'output':out,
37                                      'interactive':'1'
38                                      } )
39 # service URL
40 service = "SERVICENAME"
41 url = "http://frodo.lsi.upc.edu:8080/TextWS/textservlet/ws/processQuery/"+service
42 
43 # Create the Request object
44 request = urllib2.Request(url, datagen, headers)
45 try:
46   # Actually do the request, and get the response
47   resp =  urllib2.urlopen(request).read()
48 
49 except urllib2.HTTPError, e:
50   # handle connection errors
51   print e, "-", e.read()
52   exit()
53 
54 # No error, appropriately process response
55 # (e.g. parsing XML or JSON, and doing clever stuff with the content)
56 print resp