什么是Python 3相当于python -m SimpleHTTPServer
?
有没有办法只使用Java SE API在Java中创建一个非常基本的HTTP服务器(仅支持GET/POST),而无需编写代码来手动解析HTTP请求并手动格式化HTTP响应?Java SE API很好地将HTTP客户端功能封装在HttpURLConnection中,但是有一个用于HTTP服务器功能的模拟吗?
为了清楚起见,我在网上看到的很多ServerSocket示例的问题是他们自己做了请求解析/响应格式化和错误处理,这很乏味,容易出错,而且不太全面,我出于这些原因试图避免它.
作为我试图避免的手动HTTP操作的示例:
http://java.sun.com/developer/technicalArticles/Networking/Webserver/WebServercode.html
Python的http.server(或Python的SimpleHTTPServer)是从命令行提供当前目录内容的好方法:
python -m http.server
Run Code Online (Sandbox Code Playgroud)
但是,就网络服务器而言,它非常低调......
它表现得好像是单线程的,并且在使用RequireJS加载JavaScript AMD模块时偶尔会导致超时错误.加载一个没有图像的简单页面可能需要五到十秒钟.
什么是更快的替代方案,同样方便?
我正在编写一个简单的http服务器作为我项目的一部分.下面是我的脚本的框架:
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
class MyHanlder(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write('<html><body><p>OK</p></body></html>')
httpd = HTTPServer(('', 8001), MyHanlder)
httpd.serve_forever()
Run Code Online (Sandbox Code Playgroud)
我的问题:每次客户端连接到我的服务器时,如何抑制脚本生成的stderr日志输出?
我已经查看了HTTPServer类到它的父级,但是无法找到任何标志或函数调用来实现这一点.我还查看了BaseHTTPRequestHandler类,但找不到线索.我相信一定有办法.如果你这样做,请与我和其他人分享; 我感谢您的努力.
我正在使用npm包"http-server"(https://www.npmjs.com/package/http-server)来设置一个简单的网络服务器,但我无法使用SSL.我在package.json中的命令是
http-server -p 8000 -o -S
Run Code Online (Sandbox Code Playgroud)
在我的根目录中使用cert.pem和key.pem(现在)."-o"选项将浏览器打开到默认页面,但页面使用HTTP提供,甚至无法通过HTTPS访问.我没有收到任何错误或警告.我也尝试过添加"-C"和"-K"选项而没有运气.这个套餐有没有成功?
我希望在我的java swing应用程序中嵌入一个非常轻的HTTP服务器,它只接受请求,执行一些操作并返回结果.
是否有一个非常轻的java类,我可以在我的应用程序中使用它侦听指定端口的Http请求并让我处理请求?
请注意,我不是在寻找一个独立的http服务器,只是一个可以在我的java应用程序中使用的小型java类.
我是Go的新手.从文档中尝试了第一个hello,world,并希望从请求中读取Host和Scheme:
package hello
import (
"fmt"
"http"
)
func init() {
http.HandleFunc("/", handler)
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Host: " + r.URL.Host + " Scheme: " + r.URL.Scheme)
}
Run Code Online (Sandbox Code Playgroud)
但他们的价值观都是空白的.为什么?
我知道状态代码418被定义为愚人节的笑话,并且"预计不会被实际的HTTP服务器实现",如维基百科所述.
但是如果你们中的任何人知道支持它的语言/网络服务器/ IDE,我会感兴趣.
我正在尝试Apache(通过php),显然它给我一个内部错误(500).我只是喜欢它背后的幽默(我不想在这里试图)并且想知道是否不仅仅是Emacs实现了这一点.
更确切地说:它可以在php中模拟,例如通过做类似的事情...
header("HTTP/1.1 418 Whatever text I'd like");
Run Code Online (Sandbox Code Playgroud)
...但是你们中的任何人都知道任何实际的服务器软件(或语言)本地实现它,其中类似下面的东西不会抛出500,但实际上工作:
http_response_code(418);
Run Code Online (Sandbox Code Playgroud) 我正在玩Mux和net/http
.最近,我试图获得一个带有一个端点的简单服务器来接受文件上传.
这是我到目前为止的代码:
server.go
package main
import (
"fmt"
"github.com/gorilla/mux"
"log"
"net/http"
)
func main() {
router := mux.NewRouter()
router.
Path("/upload").
Methods("POST").
HandlerFunc(UploadCsv)
fmt.Println("Starting")
log.Fatal(http.ListenAndServe(":8080", router))
}
Run Code Online (Sandbox Code Playgroud)
endpoint.go
package main
import (
"fmt"
"net/http"
)
func UploadFile(w http.ResponseWriter, r *http.Request) {
err := r.ParseMultipartForm(5 * 1024 * 1024)
if err != nil {
panic(err)
}
fmt.Println(r.FormValue("fileupload"))
}
Run Code Online (Sandbox Code Playgroud)
我想我已经把问题缩小到实际从里面的请求中检索身体了UploadFile
.当我运行此cURL命令时:
curl http://localhost:8080/upload -F "fileupload=@test.txt" -vvv
Run Code Online (Sandbox Code Playgroud)
我得到一个空响应(正如预期的那样;我不打印到ResponseWriter
),但我只是在我运行服务器的提示符处打印了一个新的(空)行,而不是请求正文.
我将文件作为multipart发送(AFAIK,暗示使用-F
而不是-d
cURL),cURL的详细输出显示502字节发送:
$ curl http://localhost:8080/upload -F …
Run Code Online (Sandbox Code Playgroud) httpserver ×10
go ×2
http ×2
java ×2
python ×2
c ×1
command-line ×1
node.js ×1
npm ×1
python-3.x ×1
ssl ×1