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

通过Java终端向服务器发送HTTP PUT请求,java,http,terminal,put,mit-scratch,Java,Http,Terminal,Put,Mit Scratch,嗯。我的问题是,当我试图通过Java终端向服务器“”发送HTTP PUT请求时,我得到的答复是该命令不存在。所以我直接从终点站试了一下。还是不行。有没有任何方法可以让我不必安装像curl之类的程序来完成这项工作?我将与其他一些人共享这个程序,所以我不想让他们安装程序。通过候机楼,我可以这样做吗?或者,是否有工作java命令?我看到很多人没有测试过它,而且它不起作用!请帮帮我!!!!D: 这是我的程序(程序没有问题,只是找到了正确的终端命令!D:) 编辑2017年9月:哈哈,这真是个愚蠢的问题。这

嗯。我的问题是,当我试图通过Java终端向服务器“”发送HTTP PUT请求时,我得到的答复是该命令不存在。所以我直接从终点站试了一下。还是不行。有没有任何方法可以让我不必安装像curl之类的程序来完成这项工作?我将与其他一些人共享这个程序,所以我不想让他们安装程序。通过候机楼,我可以这样做吗?或者,是否有工作java命令?我看到很多人没有测试过它,而且它不起作用!请帮帮我!!!!D:

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

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

有没有任何方法可以让我不必安装像curl之类的程序来完成这项工作

没有办法

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

但是在Java中发出HTTP请求的一种(通常是1)更好的方法是使用HttpURLConnection或ApacheHttpComponents库。如果使用得当,它们都能工作



1-如果要将大型文件传输到本地文件系统或从本地文件系统传输大型文件,则诸如
curl
之类的外部命令可能更有效。但是,这是一种特殊情况。

对不起……:/如何更好地修复它?为什么要使用terminal命令?你为什么不使用一个合适的HTTP客户端呢?我只是把它格式化得更好,对不起!!!我没有使用正确的HTTP客户端,因为我不知道如何使用它。。。我试过了,但没用(发送HTTP请求的正确方法是使用HTTP客户端。Java有自己的(非常糟糕的)客户端,其形式为
HttpURLConnection
。Apache HTTP组件提供了更好的实现。请使用它。
    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();

    }

}