Posting form data to a web script

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-22-2007 02:24 PM
Hi folks,
Happy holidays to all.
I am trying to write a webscript that accepts formdata from a form. The webapp sending the form, however, uses a commons-httpclient proxy to do authentication and to separate the alfresco instance from the web application.
I can't seem to get the web script to accept any arguments. Here is an excerpt from the webscript code:
As you can see, this excerpt simply tries to display parameters submitted, and the only output is
email is null
content is null
The commons-http client excerpt is below:
I've also tried to send data using NameValuePairs and the setRequestBody () method, to no avail. I know that the Content-Type is set correctly because if I change it or remove it, the formdata object is never initialized in the script.
Any ideas?
Dan
Happy holidays to all.
I am trying to write a webscript that accepts formdata from a form. The webapp sending the form, however, uses a commons-httpclient proxy to do authentication and to separate the alfresco instance from the web application.
I can't seem to get the web script to accept any arguments. Here is an excerpt from the webscript code:
script: {var authorEmail = null;var content = null;var comment = null;for (arg in args){ logger.log(arg + "=" + args[arg]);}// log each argument (assuming one or more values have been provided for each)for (arg in argsM){ for each (val in argsM[arg]) { logger.log(arg + "=" + val); }}// locate file attributesfor each (field in formdata.fields){ if (logger.isLoggingEnabled()) { logger.log("found field "+field.name+" with value "+field.value); } if (field.name == "email") { authorEmail = field.value; } else if (field.name == "comment") { content = field.value; }}if (logger.isLoggingEnabled()) {// logger.log("formdata is +"formdata.fields); logger.log("email is "+authorEmail); logger.log("content is "+content);}
As you can see, this excerpt simply tries to display parameters submitted, and the only output is
email is null
content is null
The commons-http client excerpt is below:
client.getHttpConnectionManager().getParams() .setConnectionTimeout(5000); client.getState().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password)); PostMethod post = new PostMethod(url); post.setDoAuthentication(true); post.setRequestHeader("Content-Type", "multipart/form-data"); Part[] parts = { new StringPart("email", authorEmail), new StringPart("comment", comment) }; post.setRequestEntity(new MultipartRequestEntity(parts, post .getParams())); try { int status = client.executeMethod(post); System.out.println("received status " + status); if (status > 299) { // there was an error System.out.println(post.getResponseBodyAsString()); } } finally { post.releaseConnection(); } }
I've also tried to send data using NameValuePairs and the setRequestBody () method, to no avail. I know that the Content-Type is set correctly because if I change it or remove it, the formdata object is never initialized in the script.
Any ideas?
Dan
Labels:
- Labels:
-
Archive
4 REPLIES 4
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-26-2007 02:09 PM
try this out
//create HttpClient objectHttpClient client = new HttpClient();//pre-authenticate with alfresco serverclient.getParams().setAuthenticationPreemptive(true);Credentials loginCreds = new UsernamePasswordCredentials("admin", "admin");//Use AuthScope.ANY since the HttpClient connects to just one URLclient.getState().setCredentials(AuthScope.ANY , loginCreds);PostMethod post= new PostMethod(url);post.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, false));//Alfresco only reads the POST parameters if they are in the body of the request, so we need to create a RequestEntity to populate the body.Part[] parts = {new StringPart("email", authorEmail), new StringPart("submit", "Post"), new StringPart("comment", comment)}; MultipartRequestEntity entity = new MultipartRequestEntity(parts, post.getParams());post.setRequestEntity(entity); try { //subimit the request and get the response code int statusCode = client.executeMethod(method); //Check for code 200 if (statusCode != HttpStatus.SC_OK) { throw new HttpException("HTTP returned status code " + statusCode); } InputStream responseBody = post.getResponseBodyAsStream();}

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-27-2007 06:57 PM
I removed the Content-Type property altogether and also added the preemptive authentication flag and it started working.
Thanks for the reply!
Dan
P.S. I'm having a problem using the createAssociation method in the ScriptNode API in a web script (no association is created, no error is thrown). I wonder if anyone else has this problem or it's a known issue.
Thanks for the reply!
Dan
P.S. I'm having a problem using the createAssociation method in the ScriptNode API in a web script (no association is created, no error is thrown). I wonder if anyone else has this problem or it's a known issue.

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-17-2008 07:19 AM
I have run through the createAssociation test scripts and they execute ok. Which version of Alfresco are you using? Can you provide example of your code/model?
Thanks,
Kevin
Thanks,
Kevin

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-17-2008 11:19 AM
Hi Kevin,
Upon revisiting this, I've found it to work now with no changes (I guess it worked before and something else had been wrong).
Dan
Upon revisiting this, I've found it to work now with no changes (I guess it worked before and something else had been wrong).
Dan
