gpt4 book ai didi

java - Java中通过终端向服务器发送HTTP PUT请求

转载 作者:行者123 更新时间:2023-12-02 05:34:46 26 4
gpt4 key购买 nike

好的。我的问题是,当我尝试通过 Java 中的终端向服务器“http://scratch.mit.edu/”发送 HTTP PUT 请求时,我得到的答复是该命令不存在。所以我直接从终端尝试了。还是没有用。有没有什么方法可以让我不必安装像curl这样的程序或其他程序,这样我就可以做到这一点?我将与其他一些人共享这个程序,所以我不想让他们安装程序。通过终端,我可以做到这一点吗?或者,是否有一个WORKING java 命令?我看到很多人都没有测试过它,而且它不起作用!请帮我!!!! D:

这是我的程序(程序没有任何问题,只是找到了正确的终端命令!D:)

    package com.mkyong.shell;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class ExecuteShellComand {
public static void main(String[] args) {
ExecuteShellComand obj = new ExecuteShellComand();
int studio = 497688;
String command = "PUT /site-api/users/curators-in/" +studio +"/remove/?usernames=arinerron HTTP/1.1 \nHost: scratch.mit.edu \nAccept: */* \nAccept-Encoding: gzip,deflate,sdch \nAccept-Language: en-US,en;q=0.8 \nCookie: __qca=P0-1926269269-1400108554400; scratchcsrftoken=cQBcHRVvjG3LsQROJdCq1Ljmdi4bWnjB; scratchsessionsid=c36fe777199a51f3556f4ab97c62cc0a; __utma=133675020.292999539.1399158737.1406949614.1406996049.322; __utmb=133675020.85.9.1407000438801; __utmc=133675020; __utmz=133675020.1406740512.306.14.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided) \nDNT: 1 \nOrigin: http://scratch.mit.edu \nReferer: http://scratch.mit.edu/studios/" +studio +"/curators/ \nUser-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/34.0.1847.116 Chrome/34.0.1847.116 Safari/537.36 \nX-CSRFToken: cQBcHRVvjG3LsQROJdCq1Ljmdi4bWnjB \nX-Requested-With: XMLHttpRequest \nHTTP/1.1 200 OK \nAccept-Ranges: bytes \nAccess-Control-Allow-Credentials: true \nAccess-Control-Allow-Headers: Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control \nAccess-Control-Allow-Methods: OPTIONS, GET, POST \nAccess-Control-Allow-Origin: * \nAge: 0 \nConnection: keep-alive \nContent-Encoding: gzip \nContent-Language: en \nContent-Length: 287 \nContent-Type: text/html; charset=utf-8 \nDate: Sat, 02 Aug 2014 17:33:19 GMT \nServer: Scratch Web Server \nVary: Accept-Encoding, Accept-Language, Cookie \nVia: 1.1 varnish \nX-Cache: MISS \nX-Cache-Hits: 0 \nX-Varnish: 1986766295";
String output = obj.executeCommand(command);
System.out.println(output);
}

private String executeCommand(String command) {
StringBuffer output = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine())!= null) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return output.toString();

}

}

2017 年 9 月编辑:哈哈,这真是一个愚蠢的问题。当时我正在学习Java,所以我无法修复它。那时我12岁。现在,我会为此使用 Apache httpcomponents —— 在我看来,HttpUrlConnection 非常糟糕,并且从 Java 通过终端发送 http 请求是一件可怕的事情。

最佳答案

Is there ANY way at all that I do not have to install a program like curl or something so that I can do this?

没有办法。

UNIX/Linux 或 Windows 命令 shell 都没有内置支持执行 HTTP 请求。如果您要通过 shell 执行此操作,则需要安装 curlwget 或某些等效程序。

但是(通常1)在 Java 中发出 HTTP 请求的更好方法是使用 HttpURLConnection 或 Apache HttpComponents 库。如果使用得当,它们都会起作用。

<小时/>

1 - 如果您要向本地文件系统传输大文件或从本地文件系统传输大文件,则诸如 curl 之类的外部命令可能会更有效。不过,这是特殊情况。

关于java - Java中通过终端向服务器发送HTTP PUT请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25100903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com