http post请求错误 fileNotfoundexception 404

问题描述

服务器接口:

http请求方式:POST/FORM

http://www.iyouchai.com:8888/upload

输入参数:

file:上传文件名

username:用户名

返回值:

{

fileid: “85635dee-d326-11e3-a001-00163e0202e9.jpg”,

createtime: "2014-05-03 20:13:48 "

}

html 测试格式:

<form action="/upload/" enctype="multipart/form-data" method="post">

            <input name="file" type="file">

            <input type="submit" value="Submit">

            <input type="text" name="username" value="[email protected]">

        </form>

上传图片的代码:

/**

	 * @Description: TODO(带参,文件上传)

	 * @param actionUrl

	 * @param params

	 * @param files

	 * @return result

	 * @throws IOException

	 */

	public static String post(String actionUrl, Map<String, String> params,

			Map<String, File> files) throws IOException {

		String BOUNDARY = java.util.UUID.randomUUID().toString();

		String PREFIX = "--", LINEND = "\r\n";

		String MULTIPART_FROM_DATA = "multipart/form-data";

		String CHARSET = "UTF-8";

		URL uri = new URL(actionUrl);

		HttpURLConnection conn = (HttpURLConnection) uri.openConnection();

		conn.setReadTimeout(5 * 1000);

		conn.setDoInput(true);// 允许输入

		conn.setDoOutput(true);// 允许输出

		conn.setUseCaches(false);

		conn.setRequestMethod("POST"); // Post方式

		conn.setRequestProperty("connection", "keep-alive");

		conn.setRequestProperty("Charsert", "UTF-8");

		conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA

				+ ";boundary=" + BOUNDARY);

		// 首先组拼文本类型的参数

		StringBuilder sb = new StringBuilder();

		for (Map.Entry<String, String> entry : params.entrySet()) {

			sb.append(PREFIX);

			sb.append(BOUNDARY);

			sb.append(LINEND);

			sb.append("Content-Disposition: form-data; name=\""

					+ entry.getKey() + "\"" + LINEND);

			sb.append("Content-Type: text/plain; charset=" + CHARSET + LINEND);

			sb.append("Content-Transfer-Encoding: 8bit" + LINEND);

			sb.append(LINEND);

			sb.append(entry.getValue());

			sb.append(LINEND);

		}

		DataOutputStream outStream = new DataOutputStream(

				conn.getOutputStream());

		outStream.write(sb.toString().getBytes());

		// 发送文件数据

		if (files != null)

			for (Map.Entry<String, File> file : files.entrySet()) {

				StringBuilder sb1 = new StringBuilder();

				sb1.append(PREFIX);

				sb1.append(BOUNDARY);

				sb1.append(LINEND);

				sb1.append("Content-Disposition: form-data; name=\"file\"; filename=\""

						+ file.getKey() + "\"" + LINEND);

				sb1.append("Content-Type: application/octet-stream; charset="

						+ CHARSET + LINEND);

				sb1.append(LINEND);

				outStream.write(sb1.toString().getBytes());

				InputStream is = new FileInputStream(file.getValue());

				Log.i("文件大小", file.getValue().length() + "");

				byte[] buffer = new byte[1024];

				int len = 0;

				while ((len = is.read(buffer)) != -1) {

					outStream.write(buffer, 0, len);

				}

				is.close();

				outStream.write(LINEND.getBytes());

			}

		// 请求结束标志

		byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();

		outStream.write(end_data);

		outStream.flush();

		// 得到响应码

		int res = conn.getResponseCode();

		Log.i("图片上传结果", res + "");

		InputStream in = conn.getInputStream();

		InputStreamReader isReader = new InputStreamReader(in);

		BufferedReader bufReader = new BufferedReader(isReader);

		String line = null;

		String data = "OK";

		while ((line = bufReader.readLine()) == null)

			data += line;

		if (res == 200) {

			int ch;

			StringBuilder sb2 = new StringBuilder();

			while ((ch = in.read()) != -1) {

				sb2.append((char) ch);

			}

		}

		outStream.close();

		conn.disconnect();

		return in.toString();

	}

但是每次返回都是404,not found

不要用浏览器直接去测那个接口,  接口只支持Post

解决方案1

请求地址错误,请加上"/";http://www.iyouchai.com:8888/upload/

你的方法没有提供get方法。如果路径是对的,用网址是可以直接访问的。其显示结果就是空白的页面;如果提供了get方法,就是显示不允许使用此方法。

时间: 2024-10-17 11:35:48

http post请求错误 fileNotfoundexception 404的相关文章

详谈何为404错误及404处理方法

404问题绝对关乎网站的优化,而大部分网站都会有404错误的相关处理,比如一个网站删除了页面内容,正常网站将自动返回404状态码,搜索引擎进行更新并删除,避免对网站用户及搜索引擎带来负面影响.但问题来了,如果网站只删除了内容,没有任何主体内容的页面被保存了下来,未做404处理.当然,存在一类网站只删除内容后返回正常200状态码,提醒一句"该内容已删除",但其都没有.可以发现目前这个搜藏中的url仍然正常返回200,http://cang.baidu.com/Lee/snap/3b0a0

springboot使用之四:错误页面404处理建议

每个项目可能都会遇到404,403,500等错误代码,如没有错误页面,则会给用户一个很不友好的界面,springboot项目同样也存在这个问题. 但在官方文档并没有相关配置信息,这就要求我们自己来实现了,查了下资料,并测试通过后,有一种方法比较简单可行. 对于springboot整合mvc这里就不赘述了,官方文档里有详细说明,这里针对错误页面404举个简单例子: 1.准备页面404.html,并将它放在templates目录下面 2.写一个配置类,并且实现接口EmbeddedServletCon

asp.net下ueditor上传大容量视频报http请求错误的解决方法

故障现象: 当使用百度编辑器ueditor上传大容量视频或大容量图片的时候,编辑器报“http请求错误”的解决方法详解: 原因分析: 目前很多CMS整合了百度的ueditor编辑器,但是上传稍微大一点的文件就会报错, 解决方案 1:修改相对应的ueditor\asp\config.json编辑器文件夹中的配置文件config.json在其中查找"videoMaxSize": 1024000000, /* 上传大小限制,单位B,默认1GBB */ 这是我修改后的参数: 2:在web.co

httpWebRequest请求错误,基础连接已经关闭: 连接被意外关闭

win10下,C# 用httpWebRequest 执行post请求出现"请求错误,基础连接已经关闭: 连接被意外关闭",经测试设置 //Post请求方式 System.Net.HttpWebRequest request;            request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);            //Post请求方式            request.Method = "P

ueditor上传大容量视频报http请求错误的解决方法

故障现象: 当使用百度编辑器ueditor上传大容量视频或大容量图片的时候,编辑器报"http请求错误"的解决方法详解: 原因分析: 目前很多CMS整合了百度的ueditor编辑器,但是上传稍微大一点的文件就会报错, 解决方案 1:修改相对应的ueditor\asp\config.json编辑器文件夹中的配置文件config.json在其中查找"videoMaxSize": 1024000000, /* 上传大小限制,单位B,默认1GBB */ 这是我修改后的参数:

新手学MVC----MVC3.0错误 HTTP 404

     MVC3.0框架开发项目: 运行程序的时候遇到的错误:MVC 3.0错误 HTTP 404您正在查找的资源(或者它的一个依赖项)可能已被移除,或 其名称已更改,或暂时不可用.请检查以下 URL 并确保其拼写正确. 错误的原因:路由不正确. 解决方法:打开项目的"Global.asax"文件,找到路由注册(RegisterRoutes()) 方法,并将其中的路由中的控制器更改为已存在的action,就行了.此处相当于程序运行时,默认要打开的链接,可以根据自己的需要进行修改,此处

ABP PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词) 引发客户端错误 No &#39;Access-Control-Allow-Origin&#39; header is present on the requested resource

先请检查是否是跨域配置问题,请参考博客:http://www.cnblogs.com/donaldtdz/p/7882225.html 一.问题描述 ABP angular前端部署后,查询,新增都没问题,但更新和删除会报一个跨域问题的错误,详细信息如下: PUT http://localhost:8060/api/services/app/User/Update 405 (Method Not Allowed) users:1 Failed to load http://localhost:80

前端通信:ajax设计方案(七)--- 增加请求错误监控、前端负载均衡以、请求宕机切换以及迭代问题修复

距离上个迭代过了很长时间,中间经历了很多事情,也在每个空余时间构思了这个迭代的东西以及下个迭代要做的东西.时间周期稍微长了,望见谅. 首先解决了上个迭代遇到的问题进行完善和修复: 1. 上个迭代做ajax timeout设置的时候,手抖将timeout不小心设置成timeoutEvent,这期做了修复 2. 解决全局配置中配置额外参数,批量检查时会参数错误问题. 引入新的功能: 1. 增加浏览器发送请求的错误监控和搜集 应用场景: 前端开发依赖的东西比较多,比如宿主环境(浏览器).以及数据接口(

Asp.Net Core IIS 7.5 发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)

Asp.Net Core IIS发布后PUT.DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词) 一.在使用Asp.net WebAPI 或Asp.Net Core WebAPI 时 ,如果使用了Delete请求谓词,本地生产环境正常,线上发布环境报错. 服务器返回405,请求谓词无效. 二.问题分析诊断 首先检查跨域配置是没有问题的,查询数据和新增数据的请求也是没有问题的,只出现在修改和删除数据.通过了解ABP Web API请求头设