相关疑难解决方法(0)

使用servlet从服务器向客户端推送文件

我正在尝试编写一个servlet,它可以将文件从客户端上传到服务器,并将文件从服务器下载到客户端,从特定位置到特定位置.但是有两个问题阻止了我:1.当从客户端上传文件到服务器时,如何告诉服务器在哪里存储文件?2.(更重要的)如何从服务器下载到客户端部分?

这是迄今为止的代码:

import java.io.FileOutputStream;  
import java.io.ObjectInputStream;  
import java.io.ObjectOutputStream;  
import java.net.ServerSocket;  
import java.net.Socket;  

 public class Server extends Thread {  
   public static final int PORT = 3333;  
   public static final int BUFFER_SIZE = 100;  

 @Override  
 public void run() {  
     try {  
         ServerSocket serverSocket = new ServerSocket(PORT);  
         while (true) {  
             Socket s = serverSocket.accept();  
             saveFile(s);  
         }  
     } catch (Exception e) {  
         e.printStackTrace();  
     }  
 }  

 private void saveFile(Socket socket) throws Exception {  
     ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());  
     ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());  
     FileOutputStream fos …
Run Code Online (Sandbox Code Playgroud)

java sockets network-programming servlets

3
推荐指数
1
解决办法
6539
查看次数

通过 URLConnection 写入图像

我正在尝试通过 HttpURLConnection 写入图像。

我知道如何编写文本,但在尝试编写图像时遇到了真正的问题

我已经使用ImageIO成功写入本地硬盘:

但我试图通过 ImageIO 在 url 上写入 Image 并失败

URL url = new URL(uploadURL);
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setUseCaches(false);
connection.setRequestProperty("Content-Type", "multipart/form-data;
                                            boundary=" + boundary);
output = new DataOutputStream(connection.getOutputStream());
output.writeBytes("--" + boundary + "\r\n");
output.writeBytes("Content-Disposition: form-data; name=\"" + FIELD_NAME + "\";
                                            filename=\"" + fileName + "\"\r\n");
output.writeBytes("Content-Type: " + dataMimeType + "\r\n");
output.writeBytes("Content-Transfer-Encoding: binary\r\n\r\n");
ImageIO.write(image, imageType, output);
Run Code Online (Sandbox Code Playgroud)

uploadURL 是服务器上的 ASP 页面的 url,该页面将使用“content-Disposition:part.txt”中给出的文件名上传图像。

现在,当我发送此信息时,ASP 页面会找到请求并找到文件名。但没有找到要上传的文件。

问题是当 ImageIO 在 URL 上写入时,ImageIO 正在写入的文件的名称是什么,

所以请帮助我 ImageIO 如何在 URLConnection 上写入图像以及我如何知道我必须在 …

java sockets urlconnection image-processing httpurlconnection

3
推荐指数
1
解决办法
6408
查看次数

使用@PultipartConfig的Servlet 3.0在使用getPart()时抛出异常

使用@MultipartConfig时,我在使用server-api 3.0时会遇到奇怪的行为.当我打电话从它的工作原理100%JSP页面servlet的,但是当我做出这个servlet调用从我自己的Java客户端(使用java.net API)我得到一个异常.下面是我的源代码和我在两种情况下得到的输出.

我正在使用Java 1.6.0,并在apache-tomcat-7.0.11上运行servlet.

Servet:

import java.io.IOException;
import java.io.InputStream;
import java.util.Collection;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@WebServlet(urlPatterns="/MultipartUploadServlet" , name="MultipartUploadServlet")
@MultipartConfig(location="/tmp", maxFileSize = 10485760L)
public class MultipartUploadServlet extends HttpServlet{

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("MultipartUploadServlet.doPost");
        try {

            System.out.println("Print out the request header");
            Enumeration<String> hn = req.getHeaderNames();
            while(hn.hasMoreElements()) {
                String n = hn.nextElement();
                System.out.println(n + " [" + req.getHeader(n) + "]");
            }

            Collection<Part> requestParts = …
Run Code Online (Sandbox Code Playgroud)

java servlets urlconnection servlet-3.0

3
推荐指数
1
解决办法
6649
查看次数

Java:setRequestMethod不起作用

我有下一部分代码:

dCon = (HttpURLConnection) new URL(torrentFileDownloadLink).openConnection();
dCon.setRequestProperty("Cookie", "uid=" + cookies.get("uid") + ";pass=" + cookies.get("pass"));
dCon.setRequestMethod("GET");
dCon.setConnectTimeout(30000);
dCon.setDoOutput(true);
Run Code Online (Sandbox Code Playgroud)

但Wireshark显示请求方法是"POST".我做错了什么或者这只是一个错误?顺便说一句,getRequestMethod说方法是"GET",但实际上它是POST.

java methods url http request

3
推荐指数
1
解决办法
5737
查看次数

使用jsoup进行奇怪的编码行为

我用jsoup从不同页面的html源代码中提取一些信息.其中大多数是UTF-8编码的.其中一个用ISO-8859-1编码,这导致了一个奇怪的错误(在我的选择中).

包含错误的页面是:http: //www.gudi.ch/armbanduhr-metall-wasserdicht-1280x960-megapixels-p-560.html

我用以下代码读取了所需的String:

Document doc = Jsoup.connect("http://www.gudi.ch/armbanduhr-metall-wasserdicht-1280x960-megapixels-p-560.html").userAgent("Mozilla").get();
String title = doc.getElementsByClass("products_name").first().text();
Run Code Online (Sandbox Code Playgroud)

问题是字符串"HD Armbanduhr aus Metall 4GB Wasserdicht 1280X960 - 5百万像素"中的连字符.像öäü这样的正常变音符号被正确读取.只有这个单一字符,没有输出为"-" 出现问题.

我试图用out.outputSettings().charset("ISO-8859-1")覆盖(正确设置)页面编码,但这也没有帮助.

接下来,我尝试使用Charset类将字符串的编码从手动更改为utf8和iso-8859-1.也没有运气.

在使用jsoup解析html文档后,有人提示我可以尝试获取正确的字符吗?

谢谢

html java character-encoding html-parsing jsoup

3
推荐指数
1
解决办法
8558
查看次数

如何以编程方式将文件上传到网站?

我必须将文件上传到服务器,该服务器只显示带有文件上传按钮的jsf网页(通过http).我必须自动化一个进程(作为java独立进程完成),它生成一个文件并将文件上传到服务器.然后,必须上传文件的服务器不提供FTP或SFTP.有没有办法做到这一点?

谢谢,里奇

java jsf file-upload

3
推荐指数
1
解决办法
9157
查看次数

Playframework WSRequest POST登录

我使用Java和Playframework 1.2.3创建了一个Web爬虫.现在,我想抓取一些受经典登录/密码表单保护的网页.

事实上,这就像做这个游戏测试:

@Test
public void someTestOfASecuredAction() {
    Map<String, String> loginUserParams = new HashMap<String, String>();
    loginUserParams.put("username", "admin");
    loginUserParams.put("password", "admin");
    Response loginResponse = POST("/login", loginUserParams);

    Request request = newRequest();
    request.cookies = loginResponse.cookies; // this makes the request authenticated
    request.url = "/some/secured/action";
    request.method = "POST";
    request.params.put("someparam", "somevalue");
    Response response = makeRequest(request);
    assertIsOk(response); // Passes!
}
Run Code Online (Sandbox Code Playgroud)

但不是通过播放生成的网站,而是与外部网站.

所以,我设法使用播放网络服务器来做到这一点:

Map<String,String> params = new HashMap<String, String>();
params.put( "telecom_username", 
            Play.configuration.getProperty("telecom.access.user") );

params.put( "telecom_password", 
            Play.configuration.getProperty("telecom.access.pass") );

HttpResponse response = WS.url(loginUrl)
                        .setParameters(params)
                        .followRedirects(true)
                        .post();
Run Code Online (Sandbox Code Playgroud)

当我这样做时,如果我查看response.getString(),我发现在继续之前设置了cookie的重定向页面,但是,如果我得到一个受保护的页面,我仍然没有登录.它就像是cookie从未设置过,并且HttpResponse对象没有任何与cookie相关的功能,就像之前测试代码中的响应一样.

我也尝试过ws.url()上的authenticate()方法,但它也不起作用.

我真的不知道我正在尝试做什么是通过使用播放网络服务器,但我可以使用这个^^的帮助

非常感谢 …

java post login playframework

3
推荐指数
1
解决办法
5958
查看次数

真实世界的用户代理——它们是什么?如何设置它们?- 爪哇

我正在使用这一行在我的 Java 程序中打开一个流,但我认为我被真实世界的用户代理阻止了。

private InputStream is = new URL(a).openStream();  
Run Code Online (Sandbox Code Playgroud)

其中 a 是包含 url 的字符串。

我可以设置用户代理的最简单方法是什么?我只是刚刚了解他们,所以任何进一步的信息将不胜感激。例如:我想将其设置为 Mozilla/5.0。我是否需要添加更多信息?如果是这样,应该包括什么以及如何包括在内?另外,这是严格允许的,因为我应该担心有关设置用户代理的任何法律问题吗?抱歉,如果这个问题没有意义,那只是因为我对用户代理(基本上是程序发送它们)知之甚少,而且我不确定您是否必须注册或其他什么 - 我已经看到 Mac 上的 Safari 添加了: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17

谢谢

Ps 我已经阅读了一个类似的问题,但我从答案中不太明白 - 我是一个 Java 初学者,才刚刚开始尝试打开文件和 url 的流。

java url

3
推荐指数
1
解决办法
1248
查看次数

ANDROID java.net.URLConnection 一次发送图像和数据

我使用 java.net.URLConnection 使用 POST 方法将图像和一些参数发送到服务器。我下面的代码可以很好地将图像发送到服务器,但我有点困惑附加一些参数并一次发送到服务器。我已经关注了这里这里,但我认为我的代码采用了不同的方法。

这是我的代码片段如下:

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.app.ProgressDialog;
import android.util.Log;
import android.widget.Toast;

import com.yai.app.support.DialogHandler;

public class ThreadImageUploader {
    private int serverResponseCode = 0;
    private ProgressDialog dialog;
    private Activity activity;

    public ThreadImageUploader(ProgressDialog mProgressDialog, Activity mActivity){
        dialog = mProgressDialog;
        activity = mActivity;
    }

    public int uploadFile(final String sourceFileUri, final String upLoadServerUri) {
        String fileName = sourceFileUri;

        HttpURLConnection conn = null;
        DataOutputStream dos = null; …
Run Code Online (Sandbox Code Playgroud)

java android urlconnection

3
推荐指数
1
解决办法
5433
查看次数

获取HTTP GET请求的响应

我想在Java中使用http://www.imdbapi.com/,但我不知道我可以访问http响应.我尝试了以下方法:

public Map<String, String> get(String title)
{
    URL url = new URL("http://www.imdbapi.com/?t=" + title);
    URLConnection conn = url.openConnection(); 

    conn.getContent();      

}
Run Code Online (Sandbox Code Playgroud)

java get http

2
推荐指数
1
解决办法
3万
查看次数