上下文的历史记录 我正在尝试从HTTP客户端运行Web作业。该文件是ZIP文件。并包含一个java类和bat文件来运行该java类。当我使用POSTMAN时,这运行正常。但是当我使用HTTP客户端时,我得到以下错误总是“' - i-NPsGbTVUpaP0CeJxMQVrHoDHvaxo3'不被识别为内部或外部命令” - 请帮助 - 昨天Jagaran
@Jagaran如果它只发生在一些客户身上,那很可能是无关的。请问一个新问题 - David Ebbo 21小时前
我没有在java中使用任何HTTP客户端,它是相同的。它适用于CURL或从Web控制台加载。我的样例代码如下 - Jagaran 2小时前
我没有在java中使用任何HTTP客户端,它是相同的。它适用于CURL或从Web控制台加载。
您是否有可以发布Azure Web Job的基于Java的HTTP客户端示例?我已经尝试过所有Java REST客户端。
可能是我做错了什么。我在Azure控制台中遇到的错误是“--- i-NPsGbTVUpaP0CeJxMQVrHoDHvaxo3”未被识别为内部或外部命令,[08/25/2017 09:30:22> e7f683:ERR]可操作程序或批处理文件.o
我觉得使用java时内容类型= applciation / zip没有正确发生。请帮助我们。 示例代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.apache.http.entity.ContentType;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
/**
* @author jagaran.das
*
*/
public class AIPHTTPClient {
/**
* @param args
* @throws IOException
*/
@SuppressWarnings({ "unused", "rawtypes" })
public static void main(String[] args) throws IOException {
try {
URI uri = new AIPHTTPClient().getURI();
HttpResponse<InputStream> jsonResponse = Unirest.put("https://<URL>/api/triggeredwebjobs/TestJOb")
.basicAuth("$AzureWebJobTestBRMS", "XXXXX")
.header("content-disposition","attachement; filename=acvbgth.bat")
.field("file", new FileInputStream(new File(uri))
,ContentType.create("content-type: application/zip"),"AzureWebJob.zip").asBinary();
System.out.println(jsonResponse.getStatusText());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public InputStream readZip() {
ZipFile zipFile = null;
ZipEntry zipEntry = zipFile.getEntry("run.bat");
InputStream stream = null;
/* try {
zipFile = new ZipFile("/Users/jagaran.das/Documents/work/AIP/AzureWebJob.zip");
java.util.Enumeration<? extends ZipEntry> entries = zipFile.entries();
while(entries.hasMoreElements()){
ZipEntry entry = entries.nextElement();
stream = zipFile.getInputStream(entry);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} */
try {
stream = zipFile.getInputStream(zipEntry);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return stream;
}
public URI getURI() throws MalformedURLException {
File file = new File("/Users/jagaran.das/Documents/work/AIP/azure-poc/AzureWebJob.zip");
URI fileUri = file.toURI();
System.out.println("URI:" + fileUri);
URL fileUrl = file.toURI().toURL();
System.out.println("URL:" + fileUrl);
URL fileUrlWithoutSpecialCharacterHandling = file.toURL();
System.out.println("URL (no special character handling):" + fileUrlWithoutSpecialCharacterHandling);
return fileUri;
}
}
答案 0 :(得分:0)
在我真正尝试解决问题之前,我的回答有些过于苛刻。道歉。我现在试用了你的代码片段,看起来你正在与Unirest达成一个问题 - 可能是this one。
我的建议是转到Apache's HTTP library 这是一个工作样本:
Content-Type: application/zip
发送pi@raspberrypi:~ $ raspistill -w 800 -h 600 -tl 0 -t 0 -o - | test-launch "fdsrc ! image/jpeg ! jpegparse ! rtpjpegpay"
stream ready at rtsp://127.0.0.1:8554/test
和原始拉链内容(没有多部分马粪)。我可能过度设计了样品..但它就是它。
上传成功,WebJob发布:
答案 1 :(得分:0)
很高兴您解决了这个问题,我尝试提供一个解决方法供您参考。
将WebJob部署到azure,除了使用REST API
之外,您还可以使用FTP
方式。当然,前提是您需要通过KUDU
了解webjob上传的目录。
我通过FTP4J libiary为您提供以下代码片段:
import java.io.File;
import it.sauronsoftware.ftp4j.FTPClient;
public class UploadFileByFTP {
private static String hostName = <your host name>;
private static String userName = <user name>;
private static String password = <password>;
public static void main(String[] args) {
try {
// create client
FTPClient client = new FTPClient();
// connect host
client.connect(hostName);
// log in
client.login(userName, password);
// print address
System.out.println(client);
// change directory
client.changeDirectory("/site/wwwroot/App_Data/jobs/continuous");
// current directory
String dir = client.currentDirectory();
System.out.println(dir);
File file = new File("D:/test.zip");
client.upload(file);
} catch (Exception e) {
e.printStackTrace();
}
}
}
您可以按照此tutorial配置参数。