我正在尝试编写一个接收文件的Google Appengine Post程序。
我观察到我得到了六个字节的内容长度,这就是客户端 发送。但是,我无法获得内容。当我尝试从getInputStream中读取时 我第一次得到-1。 (我也尝试读入六个字节的ByteArray,并且 同样,我在缓冲区中什么都没得到。)
package guestbook;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.http.*;
import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import java.util.logging.Logger;
public class XStore extends HttpServlet {
public void doPost (HttpServletRequest req, HttpServletResponse resp) throws
IOException {
Logger log = Logger.getLogger(XStore.class.getName());
String ct;
ct=req.getContentType();
resp.setContentType("text/plain");
String key = req.getParameter("key");
String value = req.getParameter("value");
DatastoreService d = DatastoreServiceFactory.getDatastoreService();
byte [] B;
InputStream IS = req.getInputStream();
int i,le;
le = req.getContentLength();
StringBuffer rB = new StringBuffer();
int rv;
int c;
c = IS.read();
log.info("Srv = " + c );
这会返回-1的日志 ...为简洁省略了其余的程序 我的显示也表明le是六。
这是客户端
import java.net.*;
import java.io.*;
public class client {
public static void main (String a [] ) throws MalformedURLException,java.io.IOException,ProtocolException {
URL u = new URL("http://uthreee.appspot.com/XX?key=a&value=a");
HttpURLConnection H;
H = (HttpURLConnection) u.openConnection();
H.setRequestMethod("POST");
H.setDoOutput(true);
OutputStreamWriter w = new OutputStreamWriter(H.getOutputStream());
w.write("abc");
w.write("def");
w.close();
System.out.println(H.getResponseCode());
}}
请注意,响应代码为200。 感谢您的任何见解。一个学生和我一起度过了十多个小时 试图找到一种方法将XML文件传输到Google Appengine,但是 找不到一种方法来读取客户发送的信息(最终 将是一个Android应用程序。)
博士。 Laurence Leff计算机科学副教授, 西伊利诺伊大学,马科姆IL 61455在休假
答案 0 :(得分:0)
对于它的价值,使用包含< input type ="文件">的浏览器表单,Apache Commons FileUpload肯定适用于AppEngine。在我的情况下,表单似乎需要enctype =" multipart / form-data"属性,当然还有方法=" post"。