使用Java,特别是Android发布到RESTAPI
我在一个Android应用程序中发布了WufooAPI,我遇到了一点麻烦。我的数据似乎没有以服务器喜欢的方式格式化(或者存在其他问题)。以下是我的代码(注意,authkey和authpass是exmaple中的占位符): 我从服务器返回的响应如下所示:使用Java,特别是Android发布到RESTAPI,java,android,api,rest,Java,Android,Api,Rest,我在一个Android应用程序中发布了WufooAPI,我遇到了一点麻烦。我的数据似乎没有以服务器喜欢的方式格式化(或者存在其他问题)。以下是我的代码(注意,authkey和authpass是exmaple中的占位符): 我从服务器返回的响应如下所示: {"Success":0,"ErrorText":"Errors have been <b>highlighted<\/b> below.","FieldErrors": [{"ID":"Field17","ErrorTe
{"Success":0,"ErrorText":"Errors have been <b>highlighted<\/b> below.","FieldErrors":
[{"ID":"Field17","ErrorText":"This field is required. Please enter a value."}]}
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("Field17", "Some Value"));
httpPost .setEntity(new UrlEncodedFormEntity(postParameters));
{“成功”:0,“错误文本”:“错误已在下面突出显示。”,“字段错误”:
[{“ID”:“Field17”,“ErrorText”:“此字段是必需的。请输入一个值。”}]}
这是对失败(显然)的响应,这让我相信我的身份验证是正确的,而且它不喜欢我的JSON字符串,我查看了API文档,它们位于此处:
大家都说这应该行吗?有什么建议吗?我先看看这一行:
StringEntity postData = new StringEntity(json, "UTF8");
它是“UTF-8”
,而不是“UTF8”
注意:我建议您使用常数,以避免再次出现此类问题
StringEntity postData = new StringEntity(json, HTTP.UTF_8);
字段17可以是字符串以外的特定字段类型 看完文件后,我认为你没有抓住要点。服务器从http post而不是json字符串中接受了
字段参数。
你的问题看起来像。
因此,您的请求应该是这样的:
{"Success":0,"ErrorText":"Errors have been <b>highlighted<\/b> below.","FieldErrors":
[{"ID":"Field17","ErrorText":"This field is required. Please enter a value."}]}
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("Field17", "Some Value"));
httpPost .setEntity(new UrlEncodedFormEntity(postParameters));
ArrayList后参数=新的ArrayList();
添加(新的BasicNameValuePair(“字段17”,“某些值”);
setEntity(新的UrlEncodedFormEntity(后参数));
希望这能有所帮助。我实际上发现了这一点,这里的人给我的代码没有问题,而是我发送了错误的标题信息。这一定是WufooAPI的一个怪癖
如果我使用BasicNameValuePair对象,如R4j建议的那样,我将删除该行
httpPost.setHeader("Content-type", "application/json");
一切都很好
感谢所有的帮助,我希望这能帮助那些在Wufoo API和Java方面遇到问题的人。您是否尝试过记录json
的值?@Spittal确保您的url是正确的。在文档中,它应该以.json结尾,因为您使用json请求。https://{subdomain}.wufoo.com/api/v3/forms/{formIdentifier}/entries.{xml | json}嘿,谢谢,不幸的是,我仍然收到相同的错误。你试图发布的服务url是什么?嘿!非常感谢您的建议,我以前确实尝试过这个,但没有任何效果,但我只是用这个确切的代码再试了一次,我仍然没有看到与前面的错误有任何不同。我会错过什么吗?记住这不是真正的问题。我建议使用BasicNameValuePair
,这意味着您不向服务器发送json字符串,因此此标头导致服务器混淆,因为服务器接受标头application/x-www-form-urlencoded
。您应该阅读HttpPost
文档以了解更多详细信息。因此,发送到服务器的数据应该如下所示:Field17=Some+Value