Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java,特别是Android发布到RESTAPI_Java_Android_Api_Rest - Fatal编程技术网

使用Java,特别是Android发布到RESTAPI

使用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

我在一个Android应用程序中发布了WufooAPI,我遇到了一点麻烦。我的数据似乎没有以服务器喜欢的方式格式化(或者存在其他问题)。以下是我的代码(注意,authkey和authpass是exmaple中的占位符):

我从服务器返回的响应如下所示:

{"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