Appcelerator Titanium:createHTTPClient失败,并且在GUI REST客户端中使用相同的数据

时间:2017-04-18 00:42:49

标签: rest appcelerator appcelerator-titanium

REST客户端返回“200 OK” - 太好了!

enter image description here

createHTTPClient返回具有完全相同数据的“HTTP错误”。当我删除payoad时,我得到一个响应,当我在client.send(有效载荷)中添加有效载荷时,我得到了错误。我确实需要传递有效负载以备将来的请求。

  <select>
    <option v-for="(reason, key) in reasons" 
            :value="key"
            :key="key">
      {{reason}}
    </option>
  </select>

3 个答案:

答案 0 :(得分:1)

你没有显示你得到了什么样的错误,但我想问题是你尝试发送一个对象,而有效负载应该是文本(你的代码中有client.setRequestHeader('Content-Type', 'application/json');)。试试这个:

// Send the request.
 client.send(JSON.stringify(payload));

答案 1 :(得分:1)

您只需将最后一行更改为:

client.send( JSON.stringify(payload) );

原因是,由于您要将内容类型设置为应用程序json,因此您需要对字典对象的输入数据进行字符串化,以便服务器可以根据标头集对其进行解析。

答案 2 :(得分:0)

试试这个

var xhr = Ti.Network.createHTTPClient();

    xhr.onload = function(e) {

        var myObjectString = JSON.parse(this.responseText);
        alert(myObjectString.token);
        Ti.API.info("Received text: " + myObjectString.token);
    };

    xhr.onerror = function(e) {
        Ti.API.error(e.error);
        alert('error');
    };

    xhr.open('POST', 'https://my.cgps.org/rest_login/user/token.json');
    xhr.setRequestHeader('Content-Type', 'application/json');

    xhr.send();

希望这会有所帮助。我认为您在API调用中没有正确处理send参数。