Je suis en train de publier des données de mon application Android native.PUT HTTP Adapter dans MobileFirst Platform
code natif:
WLProcedureInvocationData invocationData = new WLProcedureInvocationData("TaskAdapter", "updateTask");
int taskId = Integer.parseInt(tvTaskId.getText().toString());
String assignedTo = tvAssignedTo.getText().toString();
String address = "";
String description = "";
String latitude = "5.0";
String longitude = "5.0";
String status = "5.0";
String comments = "5.0";
String lastupdate = "5.0";
String userLatitude = "5.0";
String userLongitude = "5.0";
String userLocation = "5.0";
String photoData = "5.0";
Object[] parameters = new Object[]{
taskId,
assignedTo,
description,
address,
latitude,
longitude,
status,
comments,
lastupdate,
userLatitude,
userLongitude,
userLocation,
photoData
};
invocationData.setParameters(parameters);
WLRequestOptions options = new WLRequestOptions();
options.setTimeout(30000);
client.getInstance().invokeProcedure(invocationData, new MyInvokeListener(), options);
code Adaptateur:
function updateTask(id) {
var input = {
method : 'PUT',
returnedContentType : 'json',
path : '/Api/Task?taskid=' + id
};
return WL.Server.invokeHttp(input);
}
XML Adapter:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed Materials - Property of IBM
5725-I43 (C) Copyright IBM Corp. 2011, 2013. All Rights Reserved.
US Government Users Restricted Rights - Use, duplication or
disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
-->
<wl:adapter name="TaskAdapter" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wl="http://www.ibm.com/mfp/integration" xmlns:http="http://www.ibm.com/mfp/integration/http">
<displayName>TaskAdapter</displayName>
<description>TaskAdapter</description>
<connectivity>
<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
<protocol>http</protocol>
<domain>testmeternative.vdot.virginia.gov</domain>
<port>80</port>
<connectionTimeoutInMilliseconds>30000</connectionTimeoutInMilliseconds>
<socketTimeoutInMilliseconds>30000</socketTimeoutInMilliseconds>
<maxConcurrentConnectionsPerNode>50</maxConcurrentConnectionsPerNode>
<!-- Following properties used by adapter's key manager for choosing specific
certificate from key store <sslCertificateAlias></sslCertificateAlias> <sslCertificatePassword></sslCertificatePassword> -->
</connectionPolicy>
</connectivity>
<procedure name="getAllTasks" />
<procedure name="updateTask" />
</wl:adapter>
Je ne suis pas su si je suis en train d'envoyer le corps de la bonne façon. De plus, comment envoyer le id
(paramètre) à la fonction d'adaptateur.
Lorsque je clique Call Mobile Premier adaptateur en éclipse, il me montre le nom de la procédure, mais le type d'appel REST comme GET
dans le menu déroulant, je le veux comme PUT
.
Votre question est très déroutant. 1) Si vous voulez utiliser "put", alors quel est le sens du "post" dans le résumé de la question? 2) qu'est ce que ce vide "" dans l'objet paramètres? 3) Qu'est-ce que "id"? –
Salut Idan, Correction de mes changements .. le vide "" dans l'objet paramètre est que je passe une chaîne vide pour l'adresse. Je veux passer taskid dans la chaîne de requête et l'objet de la tâche en tant que corps.J'ai donc pensé à créer une fonction d'adaptateur qui prend l'ID de paramètre comme ID de tâche – user3681378
La partie eclipse de votre question dépend probablement de l'adaptateur XML, veuillez nous le montrer. Au premier coup d'œil, le passage de la tâche Id est bon, vous devriez pouvoir passer n'importe quel type primitif comme paramètre. Cependant, vous passez beaucoup de paramètres, mais vous n'en attendez qu'un seul. – djna