cancel
Showing results for 
Search instead for 
Did you mean: 

POST Webscript Connector

rowe
Champ in-the-making
Champ in-the-making
Hi,

ich versuche derzeit von Share über das "remote"-Objekt Postdaten an ein Alfresco Webscript (Java Backed) zu schicken.

Das Backend Webscript ist in einer preset-site.post.desc.xml wie folgt deklariert:

<webscript>
    <shortname>Preset Site</shortname>
    <description></description>
    <url>/preset/site</url>
    <format default="json">argument</format>
    <authentication>user</authentication>
    <transaction>required</transaction>
</webscript>


Das Webscript ist Spring-Context vorhanden und soll zunächst nur die mitgelieferten POST Parameter ausgeben:

package de.mypackage

import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.DeclarativeWebScript;
import org.springframework.extensions.webscripts.Status;
import org.springframework.extensions.webscripts.WebScriptRequest;

import java.util.HashMap;
import java.util.Map;

public class PresetProgramWebscript extends DeclarativeWebScript {


    @Override
    protected Map<String, Object> executeImpl(WebScriptRequest req, Status status, Cache cache) {
        for (String header : req.getHeaderNames()) {
            System.out.println("HEADER-Key: " + header);
            System.out.println("HEADER-Value: " + req.getHeader(header));
        }
        System.out.println("———————————-");
        for (String param : req.getParameterNames()) {
            System.out.println("PARAM-KEY: " + param);
            System.out.println("PARAM-Value: " + req.getParameter(param));
        }
        System.out.println("———————————-");
        System.out.println("———————————-");


        return new HashMap<String, Object>();
    }
}


Wenn das Webscript mit seiner URL und CURL aufgerufen wird, können mitgegebene POST-Parameter aufgelesen werden und werden wie erwartet dargestellt.

Wird das Script jedoch von einem Share Webscript mit remote aufgerufen:

var connector = remote.connect(endpoint);
connector.post("/preset/site", myData);


so erscheint in der Parameterausgabe lediglich ein Parameter "ALF_TICKET". Der Inhalt von myData (ist ein JSONString) fehlt komplett.
Hat jemand eine Idee was schief läuft? Stimmt die Authentifikation nicht?


Ergänzend:
Kurios finde ich auch, lege ich parallel zum Java Webscript im Backend noch ein JS-Webscript wird dieses ebenfalls aufgeführt (nach dem Java Webscript) und ich kann in diesem
die daten von "myData" auslesen.
2 REPLIES 2

jpfi
Champ in-the-making
Champ in-the-making
Hi,
es gibt die folgenden Methoden am connector Objekt:
<ul>
<li>post(uri, body)—POSTs content to the given URI</li>
<li>post(uri, body, contentType)—POSTs content of the specified type to the given URI</li>
<li>get(uri)—GETs content from the given URI</li>
<li>put(uri, body)—PUTs content to the given URI</li>
<li>put(uri, body, contentType)— PUTs content of the specified type to the given URI</li>
<li>delete(uri)—Invokes a URI as a DELETE request</li>
</ul>

Du hast zwar nicht erwähnt was sich hinter myData versteckt, aber du sendest das ganze als body und nicht als HTTP-Param, folglich kannst du es auch nicht über getParameterNames auslesen.
VG, jan

rowe
Champ in-the-making
Champ in-the-making
Ahh ok darin besteht mein Denkfehler.
Ich bin derzeit davon ausgegangen, dass das Webscript den irgendwie auf Parameter mapped.

Danke für die Antwort.