我正在HttpURLConnection
向本地部署并使用JAVA Spark创建的本地服务发出POST请求。
我想使用进行POST调用时在请求正文中发送一些数据,HttpURLConnection
但是每次JAVA
Spark中的请求正文为null时。
下面是我为此使用的代码
post("/", (req, res) -> {
System.out.println("Request Body: " + req.body());
return "Hello!!!!";
});
public class HTTPClassExample{
public static void main(String[] args) {
try{
URL url = new URL("http://localhost:4567/");
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true);
httpCon.setRequestMethod("POST");
httpCon.connect();
OutputStream os = httpCon.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
osw.write("Just Some Text");
System.out.println(httpCon.getResponseCode());
System.out.println(httpCon.getResponseMessage());
osw.flush();
osw.close();
} catch(Exception ex){
ex.printStackTrace();
}
}
}
您应该httpCon.connect();
仅在将参数写入主体后才调用,而不是之前。您的代码应如下所示:
URL url = new URL("http://localhost:4567/");
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true);
httpCon.setRequestMethod("POST");
OutputStream os = httpCon.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
osw.write("Just Some Text");
osw.flush();
osw.close();
os.close(); //don't forget to close the OutputStream
httpCon.connect();
//read the inputstream and print it
String result;
BufferedInputStream bis = new BufferedInputStream(httpCon.getInputStream());
ByteArrayOutputStream buf = new ByteArrayOutputStream();
int result2 = bis.read();
while(result2 != -1) {
buf.write((byte) result2);
result2 = bis.read();
}
result = buf.toString();
System.out.println(result);
问题内容: 我正在尝试实现一种预输入,其来源是一个API,该API希望使用GET请求,该请求具有数据主体,而不是url编码数据。我在“准备”对象中尝试了一些其他操作,但是无法将其用于url编码参数。是否可以使用typeahead或一般的jquery使其不执行此操作?我有一种感觉jquery可能只是不允许您这样做,因为这被认为是“不好的做法”,但是更改API并不是真正的选择!这是我的代码: 我正在使
问题内容: 我想知道是否可以将PUT,DELETE请求(实际上)发送java.net.HttpURLConnection到基于HTTP的URL。 我已经读了很多描述如何发送GET,POST,TRACE,OPTIONS请求的文章,但是我仍然没有找到成功执行PUT和DELETE请求的示例代码。 问题答案: 要执行HTTP PUT: 要执行HTTP删除:
问题内容: 我正在使用的服务API具有给定的GET方法,该方法要求将数据发送到请求的正文中。 正文中所需的数据是用连字符分隔的ID列表,并且可能非常大,因此必须在正文中发送,否则可能会在浏览器/代理/网络服务器等链中的某处出现foobar。请注意,我无法控制服务或API,因此请不要提出更改建议。 我正在使用以下jQuery代码,但是在提琴手中观察请求/响应,尽管我将“ processData”选项
问题内容: 这些组合似乎无效。 头由于某种原因未设置。 问题答案: 只需直接发送xml字节即可: 输出量
我尝试使用(version4.0)调用api来提交一些数据。我想请求已经成功了。但我遇到的麻烦是,当进行调用时,我从服务器得到一个0字节失败的响应。 我已经尝试了StackOverflow上当前的许多解决方案,但找不到解决方案。谢谢你的帮助。 以下是我的设置: