0

im making an app with titanium that connects to a drupal backend. im using the awesome library (https://github.com/jbeuckm/drupal-client).

how can i show more detailed error messages (e.g. email/username has already been taken)?

i only get a 406 error code in ios when i register a new user that has already been registered.

error: {"success":false,"code":406,"source":{"url":"http://domain/user/register.json","method":"POST","ondatastream":null},"type":"error","error":"HTTP error"}

i noticed that when i connect with android there are more detailed messages available (e.source.statusText for instance).

any ideas?

update:

in android i get the information that i would need (statusText). why cant i access it in ios?

error: {"code":-1,"source":{"autoRedirect":true,"status":406,"allResponseHeaders":"Date:Mon, 13 Jul 2015 10:09:47 GMT\nServer:Apache/2.2.15 (Red Hat)\nExpires:Sun, 19 Nov 1978 05:00:00 GMT\nCache-Control:no-cache, must-revalidate, post-check=0, pre-check=0\nContent-Length:259\nContent-Type:application/json\nKeep-Alive:timeout=15, max=100\nConnection:Keep-Alive\n","connected":false,"password":null,"validatesSecureCertificate":false,"tlsVersion":0,"responseText":"{\"form_errors\":{\"name\":\"The name <em class=\\\"placeholder\\\">editor83</em> is already taken.\",\"mail\":\"The e-mail address <em class=\\\"placeholder\\\">editor83@vodes.net</em> is already registered. <a href=\\\"/user/password\\\">Have you forgotten your password?</a>\"}}","username":null,"responseXML":null,"statusText":"Not Acceptable : The name editor83 is already taken. The e-mail address editor83@vodes.net is already registered. Have you forgotten your password?","apiName":"Ti.Network.HTTPClient","location":"http://editors-testdrupal.rhcloud.com/rest/v1/user/register.json","readyState":3,"domain":null,"responseData":{"height":0,"bubbleParent":true,"type":2,"mimeType":"application/json","apiName":"Ti.Blob","nativePath":null,"file":null,"text":null,"length":259,"width":0},"connectionType":"POST","autoEncodeUrl":true,"bubbleParent":true,"_events":{"disposehandle":{}}},"error":"Not Acceptable : The name editor83 is already taken. The e-mail address editor83@vodes.net is already registered. Have you forgotten your password?","success":false}
[INFO] :   ALERT: (KrollRuntimeThread) [47,17536] Not Acceptable : The name editor83 is already taken. The e-mail address editor83@vodes.net is already registered. Have you forgotten your password?
[INFO] :   [object Object]account was not created

update 2:

it seems to be more of a ecplise/android/ios issue, so ive posted the question on the main forum.

https://stackoverflow.com/questions/31381522/different-rest-object-output-in-android-and-ios

if i get an answer ill post it here as well.

0

You might want to check services.alter.api.php

As described in this post

<?php
/**
 * Allows alteration of error data before the status code or message are returned.
 *
 * @param array $error_alter_array
 *   An associative array with the following keys:
 *     - 'code': the HTTP status code.
 *     - 'header_message': the message returned as part of the error response
 *       (for instance, "404 Not found").
 *     - 'body_data': data that was passed to the thrown exception.
 * @param array $controller
 *   The current controller definition.
 * @param array $arguments
 *   Arguments passed to the current controller.
 *
 * @see RESTServer->handleException()
*/
function hook_rest_server_execute_errors_alter(&$error_alter_array, $controller, $arguments) {

}
| improve this answer | |
  • thx for this useful links. but im not very skilled in php and dont feel to comfortable writing an own module. but i dont think this is necessary - the correct response text is already there. i just dont understand why the error object looks different on ios. ive updated the error object for android – user24957 Jul 13 '15 at 10:12
0

Coming a bit late to the party but from project page of the sandbox module REST Error Message:

Extension for the Services module returning a JSON formatted error message instead of a WSOD with error info only through the HTTP header. In many cases this is needed by the application making the request to react appropriate. At the same time it outputs human readable output, hinting developers directly what is going on in the browser.

Usage: Any code and message set with the function services_error($message, $code = 0, $data = NULL) by the Services module or in a custom [YOUR-SERVICE].service.inc file is respected. That way you can provide API specific error data for your service.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.