【发布时间】:2013-12-05 12:37:02
【问题描述】:
我正在尝试编写一个接收文件的 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 是 6。
这里是客户端
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 休假
【问题讨论】:
-
如果您只想上传文件,请查看 Google Cloud Storage,例如github.com/pliablematter/simple-cloud-storage 轻松上传到它(从 Android 或任何其他 Java 应用程序)。或者,看看uploading to Blobstore,或者如果你真的想要完全控制,Apache Commons FileUpload。避免自己实现文件上传,专注于您想到的应用程序,并将管道留给已经编写好的经过良好测试、证明的库。