将大量文本发送到服务器的更好方法?

时间:2011-03-22 21:03:47

标签: java php sql

我有一个java应用程序,它将文本发送到服务器上的sql数据库。目前我的java应用程序接收文本,将其放入url,然后将其发送到服务器上的php页面,该页面将其带入GET并将其放入数据库中。在一定程度上工作正常,问题是,我需要能够发送大量的文本,并且我一直得到414,uri长期错误。有更好的方法吗?

好吧,我试过你说的,并阅读教程,但有些东西不起作用。这是我试过的代码

public  void submitText(String urls,String data) throws IOException{
    URL url = new URL(urls);
    URLConnection con = url.openConnection();
    con.setRequestProperty("Content-Type", "text/plain; charset=utf-8");

    con.setDoOutput(true);

    OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream(), "UTF-8");
    out.write(data);
    out.flush();


}
submitText(server + "publicPB.php", "param=" +  text);

这是我的PHP代码

$param = $_POST['param'];
$sql = "UPDATE table SET cell='{$param}' WHERE 1";
mysql_query($sql);
...

我很确定这不是php的问题,因为php在GET上工作得很好,这就是我用它改变了,我认为我的问题是我不是100%确定如何用java发送数据< / p>

5 个答案:

答案 0 :(得分:3)

使用POST代替GET并将文本作为请求正文发送。您只能将如此多的数据传递给URL。例如:

// Assuming 'input' is a String and contains your text
URL url = new URL("http://hostname/path");
URLConnection con = url.openConnection();
con.setRequestProperty("Content-Type", "text/plain; charset=utf-8");
con.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream(), "UTF-8");
out.write(input);
out.close();

有关详细信息,请参阅Reading from and Writing to a URLConnection

答案 1 :(得分:2)

为什么不使用POST将数据发送到PHP页面? GET确实有smaller limit of content

答案 2 :(得分:1)

使用没有内容长度限制的POST请求。

答案 3 :(得分:0)

POST请求没有长度内容限制,并且比GET请求更安全;)

答案 4 :(得分:0)

如果使用SQL Server,我会考虑利用BCP。您可以编写文件并从Java中调用BCP,它会将信息直接发送到您的数据库。

相关问题