我正在使用curl发出一个POST请求,如下所示
curl -H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-X POST \
-d '{ "name": "PhoneName", "description": "Phone Description!", "details": { "imeiNumber": "123456789123456", "phoneNumber": "9999999999"}}' \
-k \
http://test.domain.com/myTestServer/devices
但在servlet中,我无法获取任何数据。
public void devices(HttpServletRequest request, HttpServletResponse response) throws IOException {
System.out.println("Got Request for devices");
System.out.println("Request is : "+ request);
System.out.println("Name : " + request.getParameter("name")); //gives null
System.out.println("description : " + request.getParameter("description")); //gives null
Enumeration<String> paramNames = request.getParameterNames(); //Empty Enumeration
while(paramNames.hasMoreElements()){
String paramName = paramNames.nextElement();
System.out.println(paramName + " : " + request.getParameter(paramName));
}
}
有什么建议吗?还有一种在数据内部获取数据的更好方法,如“details”:{“imeinumber”:“123456789123456”,“phoneNumber”:“99999999999”}
?
有什么建议吗?还有一种更好的方法可以在数据中获取数据,如“details”:{“imeinumber”:“123456789123456”,“phoneNumber”:“99999999999”}
对不起,我对curl没有任何想法,但我可以帮助您使用GSON库解析JSON字符串。只需将上面的JSON字符串封装在{...}
中,并将其解析为Java对象,如下面的示例代码所示。示例代码:
class Details {
private String name;
private String description;
private PhoneNumberDetails details;
// getter & setter
}
class PhoneNumberDetails{
private String imeiNumber;
private String phoneNumber;
// getter & setter
}
String json = "{ \"name\": \"PhoneName\", \"description\": \"Phone Description!\", \"details\": { \"imeiNumber\": \"123456789123456\", \"phoneNumber\": \"9999999999\"}}";
Details data = new Gson().fromJson(json, Details.class);
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(data));
输出:
{
"name": "PhoneName",
"description": "Phone Description!",
"details": {
"imeiNumber": "123456789123456",
"phoneNumber": "9999999999"
}
}
-d'{“name”:“phoneName”,“description”:“phone description!”,“details”:{“imeinumber”:“123456789123456”,“phoneNumber”:“9999999999”}}'\
将输入json推送到POST请求负载中。并且不能简单地使用输入的json属性的名称来解组,因此可以得到
System.out.println("Name : " + request.getParameter("name")); //gives null
这类语句的null
值。
您需要从HttpServletRequest
对象读取POST请求负载,然后使用json解析器解析它以获得属性值。
您可以像这样读取整个POST请求负载:
try {
InputStream inputStream = request.getInputStream();
if (inputStream != null) {
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
char[] charBuffer = new char[128];
int bytesRead = -1;
while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
stringBuilder.append(charBuffer, 0, bytesRead);
}
} else {
stringBuilder.append("");
}
} catch (IOException ex) {
throw ex;
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException ex) {
throw ex;
}
}
}
body = stringBuilder.toString();
现在您应该在可变体中获得输入json。现在使用json解析器获取Attributes值,例如如下所示:
JsonParser parser = new JsonParser();
JsonObject obj = parser.parse(body).getAsJsonObject();
String name = obj.get("name").toString();
问题内容: 我已经环顾了几天,无法解决这个问题。基本上,我正在将图像上传到服务器并获得ID作为回报,问题是我无法弄清楚如何提取此ID并将其更改为准备好保存到数据库的String。 程式码 这是我得到的输出 问题答案: 您正在接收JSON;您已经使用该方法将其解码为Python结构: 您可以将其视为任何其他Python列表;内容只是一个字典,因此另一个字典键可以获取值: 当您知道上传了多少张图像时,
因此,我试图构建一个简单的REST API,并希望试用spark,但由于某种原因,我似乎无法提取任何参数。 下面是我的测试endpoint: 现在,如果我试图在http://localhost:4567/hello上用主体{“username”:“bla”}发出请求,那么str变量只是NULL。但是如果我在req上调用body方法,req.body().toString();它确实会将正文{“us
我有登录请求,在请求中我获得了JSESSIONID和XSRF-TOKEN作为Cookie数据,如下所示 如果需要,如何从响应中提取JSESSIONID,以便在注册Cookie中传递该变量 在此处输入图像描述
我想从JAVA中的PKCS10请求中提取subject alternative name(SAN)。 首先,我使用bouncycastle获得PKCS10CertificationRequest,如下所示: 但是,我不知道是否有一种方法可以从认证请求中提取SAN值。 需要帮忙吗?
我在POST请求中从角应用程序发送表单数据到我的Azure函数,这些函数在java中编译。 客户端看起来像这样: 当物品接收到azure功能时 功能的目的是通过firebase向android应用程序发送推送通知。 带有HTTP触发器的azure函数如下所示: 当我运行我得到: ------WebKitFormBoundary2gNlxQx5pqyAeDL3内容处置:表单数据。。。。 我很高兴知道
当我向我的Twilio号码发送特定的消息时,我希望根据该消息采取行动。问题是,返回的是整个请求,而不是正文。 我在这里遵循了Twilio指南来创建webhook:https://www.Twilio.com/docs/sms/tutorials/how-to-receive-and-reply-java,并对其进行了修改,以查看请求主体,将其与我要查找的内容进行比较,然后根据需要做出响应。 问题正